Gdb学习笔记1

  其实,从很早就开始接触gdb程序,gdb调试程序伴我成长,现在对其用法记录以下:

  当程序的运行结果和预期结果不一致,或者程序出现运行错误时,gdb就可以派上大用处了。调试的基本过程是:

 -> 根据情况,分析现象 -> 根据直觉,假设原因 -> 根据经验,修改验证 ->

 |                                 |

 <-   根据经验,修改验证 <-  根据直觉,假设原因 <- 根据情况,分析现象 <-

  直到程序的结果和预期完全一致为止,就可以结束苦逼的程序调试了。调试器(如GDB)的目的是允许你在程序运行时进入到某个程序内部去看看该程序在做什么,或者在该程序崩溃时它在做什么。GDB主要可以做4大类事(加上一些其他的辅助工作),以帮助用户在程序运行过程中发现bug。

  1、 启动您的程序,并列出可能会影响它运行的一些信息

  2、 使您的程序在特定条件下停止下来

  3、 当程序停下来的时候,检查发生了什么

  4、 对程序做出相应的调整,这样您就能尝试纠正一个错误并继续发现其它错误

  在使用gdb过程中,随时可以使用帮助,主要有以下几种:

  1、

  2、

  3、

  4

Type "help" followed by a class name for a list of commands in that class.
Type "help all" for the list of all commands.
Type "help" followed by command name for full documentation.
Type "apropos word" to search for commands related to "word".
Command name abbreviations are allowed if unambiguous.
参看文章:http://blog.csdn.net/xiang90721/article/details/53115778

时间: 2024-10-11 11:20:26

Gdb学习笔记1的相关文章

[Debug]GDB学习笔记(一)

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

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中,我们可以

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

《软件调试的艺术》学习笔记——GDB使用技巧摘要

<软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. 作者是美国的Norman Matloff和Peter Jay Salzman,中文版由张云翻译.是人邮出版社图灵程序设计丛书初版.这里称为"艺术",个人觉得有点过了,但是其中关于gdb以及在gdb基础之上集成的DDD和Eclipse调试技巧的整理确实是做的很好,对于Linux/开源社区下的

Android NDK学习笔记(一) 为什么要用NDK?

NDK是什么 NDK是Native Development Kit的简称,即本地开发工具包.通过NDK,Android允许开发人员使用本地代码语言(例如C/C++)来完成应用的部分(甚至全部)功能.注意:由于翻译原因,有些地方也把Native翻译为"原生". NDK是SDK的一个补充,可以帮助你做这些事情: 生成可以在ARM CPU,Android 1.5(及以上)平台运行的JNI兼容的共享库. 将生成的共享库放置在应用程序项目路径的合适位置,使其能自动地添加进你最终的(和经过签名的)

《Linux内核分析》第六周学习笔记

<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核

【Linux学习笔记第0天:学前计划与其他】

             前言     因为学习ARM的原因,最近开始接触到Linux操作系统,原本并没 有写博客或是学习笔记的习惯,但听了马哥的建议之后,觉得如果 将学习中的知识点和感悟记录下来,一方面,是一份可以长久保存的 笔记,任何时候都可以重新翻阅:另一方面可以培养自己的文档撰写 能力,有利于自己今后的工作.同时,如果记录的东西,对某些迷茫的 同学可以有帮助的话,那也算做了件好事. 之所以要开始学习Linux,主要是因为学习ARM的过程中,需要在ARM上 跑系统,而就市面上的学习资料而言

LVS的持久连接和awk/sed/grep的学习笔记

一.LVS持久连接的模式 1.PPC(persistent port connection) ipvsadm -A|E 192.168.10.1:80 -p 600 定义VIP为192.168.10.1director的80端口为持久连接,也就是只把web服务加入集群服务,可以通过改变端口实现不同服务的持久连接且把不同服务加入集群服务 2.PCC(persistent client connection) ipvsadm -A|E 192.168.10.1:0 -p 600 定义VIP为192.

MIT 6.828 JOS学习笔记2. Lab 1 Part 1.2: The kernel

Lab 1 Part 1: PC bootstrap 我们继续~ PC机的物理地址空间 这一节我们将深入的探究到底PC是如何启动的.首先我们看一下通常一个PC的物理地址空间是如何布局的:                           这张图仅仅展示了内存空间的一部分. 第一代PC处理器是16位字长的Intel 8088处理器,这类处理器只能访问1MB的地址空间,即0x00000000~0x000FFFFF.但是这1MB也不是用户都能利用到的,只有低640KB(0x00000000~0x00