का उपयोग कर कोर फ़ाइल से लुआ स्टैक ट्रेस कैसे प्राप्त कर सकता हूं मेरे पास एक सी ++ एप्लिकेशन (ओएस एक्स के लिए) है जो लुआ को एक स्क्रिप्टिंग भाषा के रूप में कॉल करता है। मैं इन अनुप्रयोगों (100s) की एक बड़ी संख्या चला रहा हूं और वे बहुत लंबे समय (दिन या सप्ताह) के लिए चला सकते हैं।मैं gdb
कभी-कभी कोई दुर्घटनाग्रस्त हो जाता है। और जब यह दुर्घटनाग्रस्त हो जाता है तो यह मुझे एक सुंदर कोर फ़ाइल छोड़ देता है।
मैं इस कोर फ़ाइल को जीडीबी में खोल सकता हूं और यह पता लगा सकता हूं कि एप्लिकेशन कहां दुर्घटनाग्रस्त हो जाता है। मैं कॉल स्टैक चला सकता हूं और lua_State चर का उदाहरण ढूंढ सकता हूं। मेरे समस्या यह है कि मैं lua कॉल स्टैक इस समय कैसा दिखता देखना चाहते हैं है ...
सी कार्यों बुला लिए ध्यान रखें कि जब से यह है एक कोर मैं पहुँच नहीं है जो लुआ स्क्रिप्ट्स को डिबग करने के सामान्य तरीकों के नियमों का पालन करता है।
आईडी डीबग हुक के माध्यम से मैन्युअल निशान जोड़ने से बचने के लिए पसंद है क्योंकि मैं अतिरिक्त प्रदर्शन दंड के बारे में चिंतित हूं, और जटिलता जोड़ा गया है।
कॉल स्टैक जानकारी प्राप्त करने के लिए मैं लुआ आंतरिक संरचनाओं को कैसे पार कर सकता हूं?
तो, हो सकता है आप यह पहले से ही कृपया पढ़ा है, लेकिन मैं नहीं जानता, इसलिए grumpy मत हो,;) [लुआ callstack साथ सी ++ डीबगर] (http://zeuxcg.org/2010/11/07/lua-callstack-with-c-debugger /) –
@macs यह एक बहुत अच्छा अवलोकन है। "लूआ डेटा संरचनाओं का निरीक्षण करें" खंड कुंजी है। मैं उसमें से अधिकांश काम करता था लेकिन इसका उपयोग करने के लिए यह बहुत ही बोझिल था। मैं इसे व्यावहारिक बनाने के लिए शायद कुछ जीडीबी मैक्रोज़/स्क्रिप्ट लिखना चाहूंगा। –
मैं आपको एक सहायक हाथ देने में प्रसन्न हूं, [स्टैकट्रेसप्लस] (https://github.com/ignacio/StackTracePlus) भी है, लेकिन अगर मैं सही हूं तो आपको कॉलिंग सी फ़ंक्शन को संशोधित करना होगा। तो यह इस विशेष मामले में बेकार है। –