ash*_*ish 6 gdb shared-libraries
我在执行应用程序时获得了一个核心,我保存了可执行文件,核心文件和应用程序使用的共享库,/tmp以便稍后检查它们.然后我修改了库,重建了它并再次启动了可执行文件.现在,当我尝试调试核心时,gdb正在从其原始路径加载共享库,而不是从/tmp保存原始库的目录加载.
例如,原始路径是/opt/mydir/lib/libmylib.so.0.gdb正在加载这个共享库,而我希望它加载/tmp/libmylib.so.0.该应用程序还使用了一些标准库/usr/lib和/lib目录,因此我不希望这些路径被更改.只想改变/opt/mydir/lib/- > /tmp.我怎样才能做到这一点?
在最简单的解决方法是暂时恢复/opt/mydir/lib/libmylib.so.0到在碰撞时使用(即一个现在在副本/tmp),分析的核心,然后还原回新版本。
如果你不想这样做,set solib-search-path并且set sysroot是你的朋友。
请注意,您必须在加载之前同时设置两者core。此顺序应该起作用:
(gdb) set sysroot /no/such/file
(gdb) set solib-search-path /tmp:/usr/lib:/lib
(gdb) core /tmp/core
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12784 次 |
| 最近记录: |