2016-07-17 4 views
6

मैं अभी एर्लांग से शुरू कर रहा हूं, इसलिए मेरे कोड में अभी तक कुछ भी जटिल नहीं है। अक्सर मैं गलती करता हूं जो रनटाइम त्रुटियों का कारण बनता है। [] []एरलांग में रनटाइम त्रुटि के कारण क्या पता लगाना है?

{ "do_boot में समाप्त init", {undef, [{ 'lexer_app.beam', शुरू करते हैं,,}, {init:

मुद्दा मैं हमेशा चीजों को इस तरह देख रहा है , start_it, 1, []}, {init, start_em, 1, []}]}}

क्रैश डंप करने के लिए लिखा जा रहा है: erl_crash.dump ... do_boot()

में init समाप्त किया

जो मुझे गलत तरीके से त्वरित जानकारी देता है।

इस प्रकार, मुझे आश्चर्य है, erl_crash.dump है, जो जांच के लिए इस तरह त्रुटियों डिबग करने के लिए एक ही रास्ता है, स्पष्ट रूप से, कुल Abrakadabra तरह लग रहा है और मैं किसी भी तरह इस पर ध्यान देने से भी सरल बेवकूफ त्रुटियों यह पता लगाने की जरूरत है ?

मुख्य प्रश्न, क्या अधिक मानव-अनुकूल त्रुटियां प्राप्त करना संभव है, जैसे "5: 6 व्यक्ति प्रकार की स्ट्रिंग प्रकार टाइप करने के लिए असाइन करने योग्य नहीं है"?

ऐप डीबग करने का सामान्य वर्कफ़्लो क्या है?

+1

आप संदेश के आरंभ पढ़ सकते हैं कर सकते हैं: वी एम का init do_boot में बंद हो जाता है, क्योंकि यह एक में पाया गया है एक अपरिभाषित फ़ंक्शन पर कॉल करें: 'lexer_app.beam': प्रारंभ करें। मुझे लगता है कि आपने "erl -s lexer_app" के बजाय "erl -s lexer_app.beam" के साथ erl शुरू कर दिया है, अंततः बीम फ़ाइल "erl -s lexer_app -pa पथ/to/beam" के पथ को जोड़ने का विकल्प – Pascal

उत्तर

3

आप को क्रैशडम्प फ़ाइल के पाठ को पढ़ने में सक्षम होने की उम्मीद नहीं है। इसके बजाय, आपको crashdump viewer का उपयोग करना चाहिए, जो एक ग्राफिकल एप्लिकेशन है जो आपको मानव-अनुकूल तरीके से क्रैशडम्प फ़ाइल में मौजूद सभी जानकारी विवरणों को देखने देता है।

2

तुम सिर्फ सुंदर comnsole त्रुटि संदेश देखना चाहते हैं, तो आप एक छोटे चाल

7> {_type, {Reason, Stack}} = {"init terminating in do_boot",{undef,[{'lexer_app.beam',start,[],[]},{init,start_it,1,[]},{init,start_em,1,[]}]}}. 
{"init terminating in do_boot", 
{undef,[{'lexer_app.beam',start,[],[]}, 
     {init,start_it,1,[]}, 
     {init,start_em,1,[]}]}} 
8> erlang:raise(exit, Reason, Stack). 
** exception exit: undef           
    in function 'lexer_app.beam':start/0 
     called as 'lexer_app.beam':start() 
    in call from init:start_it/1 
    in call from init:start_em/1 
यहाँ
संबंधित मुद्दे