आप अजगर एकीकरण का उपयोग करके ऐसा कर सकते हैं gdb
।
यह अच्छा होगा अगर s ; bt
कदम रखा जाए और फिर एक बैकट्रेस प्रिंट किया जाए, लेकिन यह नहीं है।
आप पायथन दुभाषिया में कॉल करके एक ही बात को पूरा कर सकते हैं।
python import gdb ; print(gdb.execute("s")) ; print(gdb.execute("bt"))
इसे एक समर्पित कमांड में लपेटना संभव है, यहां "सेमी" कहा जाता है, जिसे अजगर परिभाषा द्वारा समर्थित किया गया है।
यहां .gdbinit
कई कमांड चलाने के लिए फ़ंक्शन के साथ एक उदाहरण दिया गया है।
# multiple commands
python
from __future__ import print_function
import gdb
class Cmds(gdb.Command):
"""run multiple commands separated by ';'"""
def __init__(self):
gdb.Command.__init__(
self,
"cmds",
gdb.COMMAND_DATA,
gdb.COMPLETE_SYMBOL,
True,
)
def invoke(self, arg, from_tty):
for fragment in arg.split(';'):
# from_tty is passed in from invoke.
# These commands should be considered interactive if the command
# that invoked them is interactive.
# to_string is false. We just want to write the output of the commands, not capture it.
gdb.execute(fragment, from_tty=from_tty, to_string=False)
print()
Cmds()
end
उदाहरण आह्वान:
$ gdb
(gdb) cmds echo hi ; echo bye
hi
bye
execlp("gdb", "gdb", "-batch", "-n", "-ex", "bt full", ...
और मैं पेजिनेशन को बंद नहीं कर सकता।