我希望能够通过gdb
命令传递一些命令行参数给一个Python脚本,但是在Python中导入gdb模块会删除sys中的argv属性。请问如何在下面示例中的Python脚本内访问arg1和arg2?
命令行执行:
$ gdb -x a.py --args python -arg1 -arg2
a.py:
#!/usr/bin/env python
import gdb
import sys
print('The args are: {0}'.format(sys.argv))
gdb.execute('quit')
出现错误:
AttributeError: 'module' object has no attribute 'argv'
版本:
- GNU gdb (GDB) 7.2
- Python 2.6.6
编辑:
我将要调试的最终目标是一个正在运行的C可执行文件,所以我稍后会在脚本中附加到它,因此gdb -x a.py --args python -arg1 -arg2
也不正确,因为python
部分会打印出一个gdb错误:从 /usr/bin/python...读取符号...(没有找到调试符号)...完成。
...
a.py
定义一个 Python 函数,比如说a
,那么你就可以给 gdb 传递一个参数,例如-ex "python a('答案是',42)"
。 - Mark Plotnick