gdb使用笔记

相关编译选项:

 1.-g 开启gdb

 2.-o0,o2  o0表示不优化,

 3. -funsigned-char -fdata-sections 会使compiler为每个function和data item分配独立的section,删掉未被使用的section

常用命令

1.l 列出代码

2.c 继续

3.r 跑起来

4.finish 结束当前函数

5.u +num 执行到多少行

6.b 打断点 

  b+if expr 条件断点

7.bt 查看函数栈,函数调用

8.info r/b... 查看寄存器,断点

9.n 下一行

10. s 进入函数

11. watch *  watch断点

12. display value 每次下一步都打印value的值

13. d 关闭所有断点

14. p 打印

15. x /32x ptr 16进制打印

http://www.cnblogs.com/skyofbitbit/p/3672848.html 某大神的

时间: 2024-10-14 10:12:14

gdb使用笔记的相关文章

用gdb调试程序笔记: 以段错误(Segmental fault)为例

用gdb调试程序笔记: 以段错误(Segmental fault)为例[转] 1.背景介绍2.程序中常见的bug分类3.程序调试器(如gdb)有什么用4.段错误(Segmental fault)介绍5.gdb调试入门 一.背景介绍这个笔记主要介绍开源的程序调试器(gdb)的入门知识,目的是使unix/linux环境的编程新手能够快速学会使用gdb调试程序的方法,同时也是对我使用gdb的一个经验总结.本文假设你能使用简单的unix/linux命令并能用gcc(GNU C Compiler, GNU

[Debug]GDB学习笔记(一)

GDB学习 点击打开链接 比较详细的gdb命令 gcc编译的程序要带 -g 参数,要想运行准备调试的程序,可使用run(r)命令,在它后面可以跟随发给该程序的任何参数 其它相关备忘如何在gdb下调用shell命令:答:比如要查看当前目录,只要输入 shell pwd就好了 单步调试的一些相关命令答:step <count>单步跟踪,如果有函数调用,他会进入该函数(进入函数的前提是,此函数被编译有debug信息).next <count>同样单步跟踪,如果有函数调用,他不会进入该函数

Gdb学习笔记1

其实,从很早就开始接触gdb程序,gdb调试程序伴我成长,现在对其用法记录以下: 当程序的运行结果和预期结果不一致,或者程序出现运行错误时,gdb就可以派上大用处了.调试的基本过程是: -> 根据情况,分析现象 -> 根据直觉,假设原因 -> 根据经验,修改验证 -> | | <-   根据经验,修改验证 <-  根据直觉,假设原因 <- 根据情况,分析现象 <- 直到程序的结果和预期完全一致为止,就可以结束苦逼的程序调试了.调试器(如GDB)的目的是允许你

gcc和gdb使用笔记

gcc: http://wiki.ubuntu.org.cn/Gcchowto gdb: http://wiki.ubuntu.org.cn/%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F

gdb调试笔记

如果遇到Segmentation fault类型的错误,就比需用到gdb调试了 具体步骤如下: 1.生成core文件用于调试:ulimit -c unlimited 2.运行有问题的程序生成的可执行文件比如:./main,运行结束会发现core文件生成了Segmentation fault (core dumped) 3.利用gdb调试core文件:gdb main core.*(core文件实际名字) 4.进入gdb调试模式命令行 5. 如上面图,可以对可疑栈进行查看: 如:(gdb)f 1

gdb学习笔记

设置断点 b main; 在main()入口处 b 148; 在第148行 查看断点 info b 运行程序 r 单条语句执行 n 继续运行程序 c 打印变量i的值 p i 查看函数堆栈 bt 退出函数 finish help命令只是例出gdb的命令种类,如果要看种类中的命令,可以使用help <class> 命令,如:help breakpoints,查看设置断点的所有命令.也可以直接help <command>来查看命令的帮助. TAB可补全函数名,命令名 在gdb中,我们可以

[笔记]用gdb调试core dump

总是隔一段时间才写一次C++,有些东西老是用完就忘了……记一下如何用gdb来调试core dump免得到时候又忘记. 首先需要设置core file的大小,默认是0所以不设不会生成core file $ ulimit -c unlimited 然后在编译的flag里加上 -g -rdynamic 把动态静态符号表都弄过来 然后 $ make $ # 干点啥让它core dump 假设可执行文件叫test,生成的core file叫core(ubuntu 12.04是的,其他系统可能叫其他名字)

ubuntu: qemu+gdb 调试linux kernel 学习笔记

声明: 本笔记内容并非本人原创,90%来自网络资料的整合.同时,由于自己是刚刚接触qemu & gdbserver remote debug,本文也就算不得教程,仅供有缘人参考而已. ------------------------------------------------------------------------------------------------分割线-----------------------------------------------------------

gcc gdb makefile学习笔记

一.gcc (GNU C compiler )1.预处理  gcc -E aaa.c  -o aaa.i   →  .i(c代码)    ↓ 2. 编译   gcc -S aaa.i  -o aaa.s   →   .s(汇编代码)    ↓3. 汇编   gcc -c  aaa.s  -o aaa.o  →   .o(目标代码-二进制)    ↓4. 链接   gcc aaa.o    -o aaa    →   aaa(可执行文件) 优化编译链接   gcc -O(O2/O3) aaa.o