GDB调试实践二(gdb找不到动态库,对运行中的进程生成core文件) |
您所在的位置:网站首页 › gdb调试动态库 › GDB调试实践二(gdb找不到动态库,对运行中的进程生成core文件) |
最近使用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 |