Linux下gdb调试

关于gdb的其他客套话不多说,直接进入正题。

一、gdb基本命令列表

命令 解释 简写
file 装入想要调试的可执行文件
list 列出产生执行文件源代码的一部分 l
next 执行一行源代码但不进入函数内部 n
step 执行一行源代码而且进入函数内部 s
run 执行当前被调试的程序 r
continue 继续执行程序 c
quit 终止gdb q
print 输出当前指定变量的值 p
break 在代码里设置断点 b
info break 查看设置断点的信息 ib
delete 删除设置的断点 d
watch 监视一个变量的值,一旦值有变化程序停住 wa
help gdb中的帮助命令 h

二、gdb命令运用举例

1.新建一个源文件vi yrp.cc,源代码如下:

#include<iostream>

using namespace std;

void swap(int &a,int &b)

{

int tmp;

tmp=a;

a=b;

b=tmp;

}

int main()

{

int i,j;

cout<<endl<<"Input two int number:"<<endl;

cin>>i>>j;

cout<<"Before swap(),i="<<i<<" j="<<j<<endl;

swap(i,j);

cout<<"After swap(),i="<<i<<" j="<<j<<endl<<endl;

return 0;

}

2.生成可执行文件g++ -g -o yrp yrp.cc  注意必须使用-g参数,编译会加入调试信息,否则无法调试执行文件.

3.启动调试gdb yrp

4.查看源文件list 1,(由第一行开始)回车重复上一次指令

5.设置调试断点break 16,在第16行设置断点,info break查看断点信息(简写ib)

6.调试运行输入run

7.单步调试step,进入函数内部

8.查看变量print  举例print b

9.查看函数堆栈bt,退出函数finish

10.继续运行直到下一个断点或主函数结束continue

11.退出调试quit

结束!

Linux下gdb调试

时间: 2024-12-10 09:38:40

Linux下gdb调试的相关文章

Linux知识(5)----LINUX下GDB调试

参考资料: 1.LINUX下GDB调试

【转】linux下gdb调试

本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者. GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本程序调试工作. 命令 解释 示例 file <文件名> 加载被调试的可执行程序文件. 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径. (gdb) file gdb-sample r Run的简写,运行被调试的程序. 如果此前没有下过断点,则执行完整个程序:如果有断点,则程序暂停在第一个可用断点

Linux下GDB调试C/C++

首先先编译程序并生成调试符号: gcc -g -c main.cpp gcc -o exefile main.o 以上的exefile为可执行程序的文件名 然后: gdb exefile 可以开始gdb调试了. 然后在(gdb)那里写入l命令,列出程序源码清单,再次回车是往下列出. (gdb)break linenum 是在代码行号处下断点. 然后(gdb) r 是运行调试程序,r当然就是run的意思 (gdb) n 就是next的意思,单步调试 (gdb) c 就是continue的意思,意味

Linux下gdb调试(tui)

1 处于TUI模式的GDB 为了以TUI模式运行GDB,可以在调用GDB时在命令行上指定-tui选项,或者处于非TUI模式时在GDB中使用Ctrl+X+A组合键.如果当前处于TUI模式,后一种命令方式就会使你离开TUI模式. 在TUI模式中,GDB窗口划分为两个子窗口——一个用于输入GDB命令,而另一个用于查看源代码. 例如: 源代码为ins.c #include <stdio.h> int x[10], y[10], num_inputs, num_y = 0; void get_args(

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

Linux 下GDB的使用之简单入门

Linux 下程序崩溃.先要生成Core文件方可调试(这里Test为被调试程序) 1.查看Core文件(相当于Windows下的dump)大小,如果为0,则不会生成core文件 ulimit -c 查看core文件大小 ulimit -c filesize 设置大小为filesize ulimit -c unlimited 设置core大小为无限制 2.启动被调试程序 进入到被调试程序目录,输入gdb ./Test  回车 如果被调试程序有参数需设置,则 set args xxxx 回车 3.设

Linux下arm-none-eabi-gdb调试STM32

一.环境描述 硬件开发板:野火STM32开发板 下载器与调试接口:Jlink + JTAG 操作系统:虚拟机VMware6.5 + Ubuntu12.0.4 调试工具:arm-none-eabi-gdb 调试服务器:JLink GDB Server 调试工程目标文件:LED_Test.elf 二.步骤 1.安装Jlink驱动 参考Linux下STM32开发环境的搭建 2.安装交叉编译链arm-none-eabi-gcc 参考Linux下STM32开发环境的搭建 3.编译工程以生成elf文件 参考

Linux gcc/g++下GDB调试及其调试脚本的使用

GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在 UNIX/Linux平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓“寸有所长,尺有所短”就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 2.可让

LINUX下GDB反汇编和调试

Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数.而Windows下却是相反. 1. 基本操作指令 简单的操作数类型说明.一般有三种. (1)马上数操作数,也就是常数值.马上数的书写方式是"$"后面跟一个整数.比方$0x1F.这个会在后面的详细分析中见到非常多. (2)寄存器操作数,它表示某个寄存器的内容.用符号Ea来表示随意寄存器a,用引用R[Ea]来表示它的值.这是将寄存器集合看成一个数组R,用寄存器表示符作为索引. (3)操作数是存储