我为gdb
编写了一个包装器程序,并从它开始调用gdb_init
,它会检查python版本,导致失败导致分段错误。
我的机器是64位linux机箱,我们需要32位gdb
及其相关软件包。考虑到我已经放置了python
和python-devel
32位软件包。除此之外,所有代码也使用-m32
进行编译。
int main(int argc, char* argv[])
int main_pid = atoi(argv[3]);
ddb_ops.pid=main_pid;
ddb_ops.get_regs = getRegister;
ddb_ops.attach = attachThread;
ios::sync_with_stdio();
init_libgdb(argv[1], argv[2]);
flush_process_state();
这是我得到的堆栈..
Starting program: test proc1 1.rxt
[Thread debugging using libthread_db enabled]
program received signal SIGSEGV, Segmentation fault.
0x083203e6 in lbasename ()
(gdb) bt
#0 0x083203e6 in lbasename ()
#1 0x08202705 in ldirname ()
#2 0x080df54a in _initialize_python ()
#3 0x081fefef in gdb_init ()
#4 0x080909cf in init_libgdb (symfile=0xffffcef8 "proc1", outfile=0xffffcefe "1.txt") at ../gdbinterface.c:785
#5 0x08090d0b in main (argc=5, argv=0xffffcc74) at ../test.cpp:79
任何帮助都将非常感谢..
答案 0 :(得分:0)
你必须在启动时设置python_libdir。
如果你想拥有自己的驱动程序,你只需要深入了解细节。这与gdb内部不受支持。