GDB调试实践二(gdb找不到动态库,对运行中的进程生成core文件)

您所在的位置:网站首页 gdb调试动态库 GDB调试实践二(gdb找不到动态库,对运行中的进程生成core文件)

GDB调试实践二(gdb找不到动态库,对运行中的进程生成core文件)

2023-08-13 04:06| 来源: 网络整理| 查看: 265

最近使用GDB调试程序的一点经验之谈:

1、程序运行中生成一个Core文件便于保护现场,调试程序,gcore可以满足这种需求:

gcore:对正在运行的进程生成一个内存转储文件,方便保护现场。例如:

–     gcore -s -c test.core pid

–     用-s选项使进程在转储过程中处于停止状态,可以保证转储文件的一致性。若不用-c选项指定转储文件名,则会使用默认的core.pid形式的文件名。

 

2、我的linux虚拟机中调试程序时,发现直接run程序没问题,但gdb调试的时候就提示找不到某个动态库

原因如下:

1)我的虚拟机里同一个用户下由于要编译测试多个不同版本的代码,而每个版本都有不同的运行环境(如:PATH、LD_LIBRARY_PATH等环境变量设置)

2)我目前使用csh,为了快速切换不同的编译环境,我把运行环境所需的环境变量写到不同的.cshrc脚本中,需要切换时运行source .cshrc_XXX

3) GDB调试程序时会启一个新的shell,而且新shell启动时使用默认的.cshrc脚本,从而导致上述的问题,从本质上来说GDB使用的shell的环境非我们要调试程序所需的shell环境设置

 

解决方法:

1)最简单:将所有动态库的查找位置都设置到默认.cshrc中的LD_LIBRARY_PATH的环境变量中

2)其他方法有待探索



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3