आप एक बहु थ्रेडेड पायथन प्रक्रिया में डीबगर संलग्न कर सकते हैं, लेकिन आपको इसे सी स्तर पर करने की आवश्यकता है। क्या हो रहा है, इस बारे में समझने के लिए, आपको पाइथन दुभाषिया को प्रतीकों के साथ संकलित करने की आवश्यकता है। यदि आपके पास नहीं है, तो आप python.org से स्रोत डाउनलोड करने और यह अपने आप का निर्माण करने की आवश्यकता है:
./configure --prefix=/usr/local/pydbg
make OPT=-g
sudo make install
sudo ln -s /usr/local/pydbg/bin/python /usr/local/bin/dbgpy
सुनिश्चित करें कि आपके काम का बोझ दुभाषिये की उस संस्करण पर चल रहा है। फिर आप किसी भी समय जीडीबी के साथ इसे संलग्न कर सकते हैं। पाइथन लोगों ने अपनी विविध निर्देशिका में नमूना ".gdbinit" शामिल किया है, जिसमें कुछ उपयोगी मैक्रोज़ हैं। हालांकि यह बहु थ्रेडेड डीबगिंग (!) के लिए टूटा हुआ है। आप इस
while $pc < Py_Main || $pc > Py_GetArgcArgv
निम्नलिखित के साथ
तरह लाइनों को बदलने के लिए की जरूरत है:
while ($pc < Py_Main || $pc > Py_GetArgcArgv) && ($pc < t_bootstrap || $pc > thread_PyThread_start_new_thread)
अन्यथा pystack
की तरह आदेश मुख्य थ्रेड के अलावा अन्य धागे पर समाप्त नहीं होंगे। इस सामान के साथ, आप
gdb> attach <PID>
gdb> info threads
gdb> thread <N>
gdb> bt
gdb> pystack
gdb> detach
जैसी सामग्री कर सकते हैं और देखें कि क्या हो रहा है। एक प्रकार का।
आप "pyo" मैक्रो के साथ ऑब्जेक्ट्स को पार्स कर सकते हैं। अपने ब्लॉग पर Chris has some examples।
शुभकामनाएं।
(मेरे लिए कुछ महत्वपूर्ण जानकारी के लिए Dan's blog के लिए Shoutout, विशेष रूप से सूत्रण ठीक!)
स्रोत
2009-02-15 12:18:34
साइट 404 है। कृपया यहां दिए गए चरणों को शामिल करें। – luckydonald