gdb调试C/C++程序

时间:2021-09-26 16:39:38


用gdb调试程序时,要使用-g选项添加调试信息,如:

g++ -g pagerank.cpp -o pagerank

接着使用gdb pagerank即可进入调试程序。

常用命令如下:

  • 显示图形化代码 Ctrl+x+a
  • 启动程序 r (run)
  • 断点 b (breakpoint)
  • 清除/禁用/启用断点 delete/disable/enable
  • 单步 s (step 碰到函数会进入)
  • 单行 n (next 碰到函数不会进行, 而是整条执行)
  • 执行到下一个断点 c (continue)
  • 查看变量 p (print)
  • 显示变量 display
  • 查看当前调用堆栈 bt (backtrace)
  • 查看某一层调用代码 f (frame)

关于程序出现段错误 segmentation fault (core dump)的调试方法详见https://my.oschina.net/zenglingfan/blog/169871

ulimit设置系统资源的参数如下:

-a:显示目前资源限制的设定;

 -c :设定core文件的最大值,单位为区块; 

-d <数据节区大小>:程序数据节区的最大值,单位为KB; 

-f <文件大小>:shell所能建立的最大文件,单位为区块; 

-H:设定资源的硬性限制,也就是管理员所设下的限制; 

-m <内存大小>:指定可使用内存的上限,单位为KB; 

-n <文件数目>:指定同一时间最多可开启的文件数; 

-p <缓冲区大小>:指定管道缓冲区的大小,单位512字节; 

-s <堆叠大小>:指定堆叠的上限,单位为KB; 

-S:设定资源的弹性限制; 

-t :指定CPU使用时间的上限,单位为秒; 

-u <程序数目>:用户最多可开启的程序数目; 

-v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。

ulimit用法具体可参考: http://man.linuxde.net/ulimit