c++ - 在共享对象文件中设置 gdb 断点

标签 c++ gdb breakpoints shared-libraries

我有一个动态加载共享对象库的可执行文件,比如 foo.so。我不构建 foo.so,它是作为一个库提供给我在我的代码中使用的。 foo.cpp 编译后得到 foo.so。我无权访问 foo.cpp,但可以访问 foo.so。我想在我的可执行文件调用此共享库 foo.so 中的函数时(即调用 foo.cpp 中的函数时)设置一个断点。 gdb 中有这样做的方法吗? 我已经尝试过

gdb funcname 

但似乎不起作用。有任何指示如何在此时中断 gdb 吗?

最佳答案

Is their a way in gdb to do so?

是的。

I have tried gdb funcname

那是行不通的。您需要运行 gdb exename,然后在 (gdb) 提示符处运行 break funcname

此时,GDB 可能会通知您 funcname 尚不存在(因为您尚未动态加载 foo.so),并会询问您是否要创建延迟断点。您应该回答yes,每次加载新的共享库时,GDB 都会重试设置此断点。最终这会成功,并且您应该设置断点(自动且静默),并且当您稍后调用 funcname 时,该断点将触发并且 GDB 将停止(这正是您想要的)。

关于c++ - 在共享对象文件中设置 gdb 断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944038/

相关文章:

javascript - 如何摆脱 Aptana 中 javascript 文件中的幻像断点?

random - Swift 数组访问触发 EXC_BREAKPOINT

c++ - 如何在客户端-服务器应用程序中获取共享内存中的事件

c++ - 从 C++ 应用程序运行 shell 脚本并检查它是否成功

c++ - 配置 netbeans 8.0 gdb 以使用 gradle cpp 插件

c - 汇编跳转指令地址计算

C++11 案例研究 : How to implement factory design with smartpointers? [示例和测试]

c++ - OpenMPI 与 Mvapich2 : MPI_Send without MPI_Recv

gdb - 在 GDB 中调试使用 MinGW32 编译的 Ada 应用程序

iPhone 不会在断点处停止