调用gdb_init时出现分段错误

时间:2014-07-25 12:47:44

标签: python gdb

我为gdb编写了一个包装器程序,并从它开始调用gdb_init,它会检查python版本,导致失败导致分段错误。

我的机器是64位linux机箱,我们需要32位gdb及其相关软件包。考虑到我已经放置了pythonpython-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

任何帮助都将非常感谢..

1 个答案:

答案 0 :(得分:0)

你必须在启动时设置python_libdir。

如果你想拥有自己的驱动程序,你只需要深入了解细节。这与gdb内部不受支持。