1.gdb调试器在visual studio或dev c++中也有类似的调试图形化可视界面,但是gdb不同的是它是由命令行组成,他的界面对于习惯图形化可视界面的用户来说一时间会不知所措

2.通过gcc编译源文件的时候需要引入-g表示在编译的时候引入一些调试的信息,当然前面的随笔也讲过如果没有加入-o那么最后编译出来的在windows下的文件是a.exe,注意这个区别

注意:gcc中的-std指令可以选择编译源文件的编译器的编译标准

eg:gcc xx.c -std=c99(使用c99标准编译该文件)

3.gdb中第一种在dos系统下进入的方法:

gdb 文件名.exe

gdb中第二种进入的方法:直接在dos系统下输入gdb进入gdb调试界面,但是此时gdb调试程序并不知道应该调试的是那个文件,这时候需要我们去指定调试的文件,语法规则如下

file 文件名.exe

以上的命令就可以实现所需要调试程序的加载(注意这边的file不可以简写成f,f并不会被gdb程序读取)

输入上述指令后,就可以进入gdb调试界面了

4.gdb中指令存在简写方式

(1)run == r,运行当前程序,并且会说明是否正常退出以及正常运行

(2)quit == q,退出gdb调试,回到原先的dos系统下

(3)break == b,设置断点

语法1:b 函数名

会在相应的函数名下的第一条语句所在的命令行设置断点

eg:b main(那么运行到main函数的第一条语句就会暂停,断点在那边,直到接收到c命令才会继续进行)

语法2:b 程序名.cpp:设置断点的命令行行数

会在相应程序的对应行数下的命令行设置断点

eg:b test.cpp:11(那么运行到该源代码的第11行的时候就会暂停)

语法3:b 断点所在的命令行数

会在加载后的程序的源代码中的对应行添加断点

eg:b 5(那运行到该源代码的第五行就会暂停)

删除断点的命令:

delete == d,如果直接输入d,那么默认删除所有断点,如果输入d 数字,则会删除相对应数字编号的断点

tbreak == tb,设置临时断点,就是当程序运行到这停止后就会删除这个临时断点

(4)continue == c,一般和断点配套使用,是程序继续进行

(5)next == n,表示单步执行,一般也要和断点相互配套执行,不同的是,continue会一直执行到下一个断点或者程序终止,而next则是一行一行的执行,可以更方便的精细调试,注意输入n指令的 时候打印的代码行并不是表示该行代码已经被执行,而是说这行代码将要被执行

(6)step == s,进入即将被执行的函数内部,如果是命令next,他会直接跳过除了main函数之外的其他函数,而只是将这个被调用函数的执行结果输出,并不会进入该被调用函数的内部

(7)list == l,他会显示即将被执行的下十行代码,可以多次输入该命令,会不断输入后面十行的指令,类似于第一次输出一到十,第二次输出十一到二十,直到所有的命令都被输出为止,期间如果有其他的操作使得即将被执行的代码行行数变化,那么l打印出来的内容也会相应发生变化

(8)print == p,打印出相应变量的值

(9)info == i,查看相对应的调试命令的信息

eg:i b:查看当前的所有设置的断点信息

p 变量名:打印出相应变量的值

p 数组名:打印出数组中的所有成员

p 函数名:打印出函数所在的地址

感觉这个命令的作用有点类似于dev中的add watch

(10)watch,watch设置监视点,如果他监视的变量的值发生变化,gdb就会停下来(暂时没看出来这个设置监视点的好处,等以后详细学习后再来补充)

(11)backtrace == bt,打印所有栈帧信息

(12)up,将调用栈向上移动一个单位,也就是说将栈帧往上移动,同理down就是将调用栈下移一个单位,也就是说将栈帧往下移动,类似于在bt打印的情况下,在当前所处的栈帧位置下进行上移或下移,注意是整体的上下移动,不是当前栈帧的移动

(13)frame,调出栈帧信息,可以与backtrace配合使用

frame i,表示调出第i层的栈帧信息,这样子就可以通过p来打印出对饮栈下面的变量值,当然平时可以直接通过up,down实现栈帧的转换

gdb中的调试技巧

1.如果有命令需要重复多次输入,可以在输入一次该命令后一直按enter键就可以了,enter键表示重复上一次的命令操作

2.如果只记得开头字母的gdb命令,忘了详细名称可以输入开头字母+tab键(按两次)来查看相关首字母开头的命令(自动补全命令),如果有多个选项出现的时候,则会打印出所有的选项,否则会直接补全

3.gdb和windows一样可以直接通过键盘上的上下键来切换当前命令上一次或下一次输入的命令

gdb调试器在windows下的相关内容的更多相关文章

  1. Ubuntu下GDB调试器的使用

    gdb调试器时一款GNU组织开发.发布的UNIX/Linux环境下的程序调试工具,没有图形界面,但功能强大. GDB使用流程: 先编写一个测试文件gdbTest.c 保存后用gcc对文件进行编译,需要 ...

  2. Linux gdb调试器用法全面解析

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断 ...

  3. linux基础2——gdb调试器

    gdb调试器使用的一般步骤(不断更新完善): 1.编译过程中要用-g参数来添加调试符号——gcc test.c -g: 2.gdb启动可执行文件——gdb a.out: 3.出现gdb符号表示启动成功 ...

  4. GCC编译器和GDB调试器常用选项

    http://blog.csdn.net/u014328976/article/details/46745349 GCC编译器 gcc hello.c -o hello                 ...

  5. 使用GDB调试器(一)

    使用GDB调试器 GDB概要---- GDB是GNU开源组织公布的一个强大的UNIX下的程序调试工具.也许,各位比較喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但假设你是在UNIX平台下做软 ...

  6. Mac os系统gdb调试器的安装与使用

    Mac os系统gdb调试器的安装与使用 1.简介 Mac os下的Terminal 终端中默认情况下并没有安装gdb调试器,但是可以通过gcc编译器进行代码编译,如果出错了就需要通过gdb调试器进行 ...

  7. Linux C 程序 函数,数组,指针,gdb调试器(SEVEN)

    函数,数组,指针,gdb调试器 1.函数定义 如果明确指定返回类型,默认为int 参数传递:实参对形参的参数传递是单向的,实参只是把自己的值赋给形参.                      形参的 ...

  8. GDB调试器

    /*this project used for gdb debug c programs*//*At first,using compile command turn out the executab ...

  9. 第二章排错的工具:调试器Windbg(下)

    感谢博主 http://book.51cto.com/art/200711/59874.htm 2.2  读懂机器的语言:汇编,CPU执行指令的最小单元2.2.1  需要用汇编来排错的常见情况 汇编是 ...

随机推荐

  1. .NET混合开发解决方案10 WebView2控件调用网页JS方法

    系列目录     [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...

  2. 运维:DevSecOps

    什么是DevSecOps DevSecOps 是一场关于 DevOps 概念实践或艺术形式的变革.DevOps之父Patrick Debios 强调:"DevOps2.0时代应首先解决人的问 ...

  3. 113_Power Pivot 销售订单之重复购买率及购买间隔天数相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 在论坛中看到朋友在提复购率(重复购买率)等相关问题,今天把结果贴出来. 问题原贴:计算订单中的老顾客复购率 感谢 ...

  4. 记 iTextSharp 提取中文的问题

    原文 问题 下面的代码中 currentText 能提取到大部分汉字 但是字体为 Non-Embedded Font: AdobeSongStd-Light(Horizontal) 的汉字提取不到 P ...

  5. Calico网络插件

    以下大部分是本人参考各种资料{官方文档.书籍}对知识的汇总和整理,其中有理解错误的地方请大神留言和指正,嘿嘿~~ 1.概述 参考文档:https://projectcalico.docs.tigera ...

  6. drools中then部分的写法

    目录 1.背景 2.支持的方法 2.1 insert 插入对象到工作内存中 2.1.1 需求 2.1.2 drl文件编写 2.1.3 部分java代码编写 2.1.4 运行结果 2.1.5 结论 2. ...

  7. Layer Normalization和Batch Normalization

    Layer Normalization 总览 针对同一通道数的图片的H*W进行层正则化,后面的γ和β是可以学习的参数,其中这两个的维度和最后一个的维度相同 例如特征图矩阵维度为[3, 577, 768 ...

  8. R-CNN学习笔记

    R-CNN学习笔记 step1:总览 步骤: 输入图片 先挑选大约2000个感兴趣区域(ROI)使用select search方法:[在输入的图像中寻找blobby regions(可能相同纹理,颜色 ...

  9. SpringCloud 服务治理

    目录 1. Eureka 1.1 Eureka 介绍 1.2 Eureka 快速入门 父工程 Eureka Server(子工程) pom.xml 启动类 application.yml Eureka ...

  10. 关键路径 p3 清华复试上机题

    关键路径 p3 清华复试上机题 题目描述 小H为了完成一篇论文,一共要完成n个实验.其中第i个实验需要a[i]的时问去完成.小H可以同时进行若干实验,但存在一些实验,只有当它的若干前置实验完成时,才能 ...