工控网首页
>

应用设计

>

gdb调试和Core dump

gdb调试和Core dump

2013/9/25 10:32:50

Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:

  • 它使你能监视你程序中变量的值.

  • 它使你能设置断点以使程序在指定的代码行上停止执行.

  • 它使你能一行行的执行你的代码.

      为了使 gdb 正常工作, 你必须使你的程序在编译时包含调试信息. 调试信息包含你程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号.  gdb 利用这些信息使源代码和机器码相关联.在编译时用 -g 选项打开调试选项.      运行 gdb: gdb

基本 gdb 命令.         gdb 支持很多与 UNIX shell 程序一样的命令编辑特征. 你能象在 bashtcsh里那样按 Tab gdb 帮你补齐一个唯一的命令, 如果不唯一的话 gdb 会列出所有匹配的命令. 你也能用光标键上下翻动历史命令. 什么是Core Dump?      开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考. core dump又叫核心转储, 通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个core文件。 如何使用core文件? gdb -c core文件路径 [应用程序的路径]         进去后输入where回车, 就可以显示程序在哪一行当掉的, 在哪个函数中. 为什么没有core文件生成呢?     有时候程序down了, 但是core文件却没有生成. core文件的生成跟你当前系统的环境设置有关系, 可以用下面的语句设置一下, 然后再运行程序便成生成core文件. ulimit -c unlimited core文件生成的位置一般于运行程序的路径相同, 文件名一般为core.进程号。
命   令描  述
file装入想要调试的可执行文件.
kill终止正在调试的程序.
list列出产生执行文件的源代码的一部分.
next执行一行源代码但不进入函数内部.
step执行一行源代码而且进入函数内部.
run执行当前被调试的程序
quit终止 gdb
watch使你能监视一个变量的值而不管它何时被改变.
break在代码里设置断点, 这将使程序执行到这里时被挂起.
make使你能不退出 gdb 就可以重新产生可执行文件.
shell使你能不离开 gdb 就执行 UNIX shell 命令.
投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机