linux/window程序调试
天蝎座的程序员
这个作者很懒,什么都没留下…
展开
-
08.函数调用栈管理
使用 GDB 调试程序时,当程序发生中断,我们首先应该知道程序在哪里产生中断以及产生中断的原因是什么?函数发生调用时,相关的调试信息就已经产生,并且被存储在一块被称为栈帧的数据里。栈帧是在调用栈的内存区域里分配的,是调用栈划分的连续的区块,简称为栈。每个帧是一个函数调用另一个函数的相关数据,包含了传递给本地用函数的参数,这个函数的本地变量和这个函数的执行地址。......原创 2022-06-19 19:58:02 · 96 阅读 · 0 评论 -
07.gdb源代码查看与管理
GDB之所以能够知道对应的源代码,是因为调试版的可执行程序中记录了源代码的位置;因为源代码的位置在编译之后可能会移动到其它地方,所以GDB还会在当前目录中查找源代码,另外GDB也允许明确指定源代码的搜索位置。.........原创 2022-06-04 22:04:37 · 2821 阅读 · 0 评论 -
06.gdb查看和修改寄存器
查看寄存器Makefile中取消参数g,以没有调试信息的方式来原创 2022-06-01 15:29:07 · 733 阅读 · 0 评论 -
05.用gdb查看和修改内存
GDB 中为我们提供了查看内存的命令 x,它是 examine 命令的简写,使用 x 命令查看内存数据的格式有很多种,这里的内存数据可以是任意类型。命令的详细介绍如下。参数 f 的可选值:x 按十六进制格式显示变量。d 按十进制格式显示变量。u 按十六进制格式显示无符号整型。o 按八进制格式显示变量。t 按二进制格式显示变量。a 按十六进制格式显示变量。c 按字符格式显示变量。f 按浮点数格式显示变量。参数 u 的可选值:b 表示单字节h 表示双字节w 表示四字节g 表示八原创 2022-06-01 14:41:57 · 3470 阅读 · 0 评论 -
04.gdb调试之查看/修改变量
查看变量info args查看函数参数print 变量名p 变量名查看变量的值set print null-stop设置字符串的显示规则set print pretty显示结构体set print array on显示数组使用gdb内嵌函数例如: sizeof,strlen代码https://github.com/CoderDuanGe/gdbdebug/tree/master/section4启动gdb调试section4查看main函数的参数原创 2022-05-29 09:45:00 · 7409 阅读 · 0 评论 -
03.gdb调试断点管理
设置断点break/b 文件名:行号解释:在源代码某一行设置断点b 函数名解释:给函数设置断点,如果有多个同名函数,则给所有的同名函数设置断点rb 正则表达式解释:为满足正则表达式的函数设置断点b 断点 条件解释:设置条件断点tb 断点解释:设置临时断点代码:https://github.com/CoderDuanGe/gdbdebug/tree/master/section31.break/b 文件名:行号2.b 函数名查看断点:3.rb 正则表达式举例:给所原创 2022-05-25 17:31:50 · 305 阅读 · 0 评论 -
02.gdb启动调试
gdb指定参数的三种方法调试用到的代码:https://github.com/CoderDuanGe/gdbdebug/tree/master/section1https://github.com/CoderDuanGe/gdbdebug/tree/master/section21.第一种方式启动gdb启动时传入三个参数有空格需要用引号2.第二种方式在gdb没执行run之前传入三个参数3.第三种方式gdb运行的时候,传入参数根据pid附加到进程dgb attch原创 2022-05-24 23:00:59 · 1165 阅读 · 0 评论 -
01.gdb调试
环境准备linux操作系统:物理机,云服务器,虚拟机c++开发调试环境准备安装gcc,g++,gdb在ubuntu平台:apt install gcc g++ make gdb在centos平台:yum install gcc gcc-c++ make gdblinux下的调试工具gdbhttps://www.sourceware.org/gdb/makefile参数:CFLAGS: -g有了-g参数调试比较方便,如果没有-g参数,就没有调试信息,调试比较的困难gd原创 2022-05-14 00:25:10 · 252 阅读 · 0 评论