【发布时间】:2012-03-02 10:33:44
【问题描述】:
我正在尝试调试动态共享库 libexecHook.so 中的一些函数。这个库被预加载设置 LD_PRELOAD 以便拦截和重写一些对 execve() 和朋友的调用。出于调试目的,我用符号构建了 gmake。根据我在其他问题中读到的内容,这应该可行:
gdb ~/tmp/make-dfsg-3.81/make
set exec-wrapper env LD_PRELOAD=/home/marko/execHook.C027/lib/libexecHook.so.0.0.0
start
break execve
break execvp
cont
我确实看到断点设置正确,例如
4 breakpoint keep y 0x00007ffff7bd92e0 in execvp at execHook.c:128
但是 gdb 永远不会在我预加载的 exec..() 函数中中断。在执行期间观察调试输出,我看到我的库函数正在被调用。
【问题讨论】:
-
您是否尝试过在启动 gdb 之前设置 LD_PRELOAD?
-
我之前没有尝试过,但它没有任何区别。
标签: c debugging gdb ld-preload