记录一下从大神那学习得到的gdb调试方法,可以在ubuntu系统下快速、有效的帮助定位c/c++里的段错误。
一、gdb调试c程序
1)配置core文件
设置core文件大小
ulimit -c [filesize] #设置core大小
ulimit -c unlimited #一般情况下,可设置core文件的大小不受限制
查看目前core是否配置好
(如果是0,未配置好)
ulimit -c
2)运行程序
正常运行可执行文件,直到程序崩溃,此时产生了core文件
./yourExeFile
3)GDB调试core文件
gdb ./yourExeFile core
4)查看堆栈信息
bt
查看堆栈命令时,从后向前看。
补充:
如果步骤3)找不到core文件,可能是core文件生成到了其他路径或其他名称。
查看 /proc/sys/kernel/core_pattern文件,里面设置的即为core文件的生成路径和名称。
例如:“/home/saneri/corefile/core-%e-%p-%t”,将会控制core文件存放到相应目录,且产生的文件名为core-命令名-pid-时间戳。
为调试方便,可以通过echo "./core" > /proc/sys/kernel/core_pattern
命令,设置core文件直接生成到本地,且名称为core,好记。
二、gdb调试Python调用的C共享库
1)gdb命令
通过下面命令运行Python程序,直到崩溃
gdb --args python3 yourName.py
2)run命令正式跑程序
run
3)bt命令查看堆栈信息
bt
参考:
链接1 Linux下生成core文件,并用gdb调试core文件/ gdb调试段错误方法
链接2 使用GDB调试python调用的C++共享库
感谢链接博主,职业道路上的明灯啊。。。