【用GDB调试程序(一)】教程文章相关的互联网学习教程文章

gdb 调试【代码】

0x0 0 r1 0x0 0 r2 0x0 0 r3 0x1e 30 r4 0x649598 6591896 r5 0xb300a568 3003164008 r6 0x6495a0 6591904 r7 0x8b8 2232 r8 0x649590 6591888 r9 0x14d4 5332 r10 0x8b8 2232 r11 0x1 1 r12 0x0 0 sp 0xb300a120 0xb300a...

gdb调试

gdb调试 基础指令 -g 使用该参数生成调试文件 gdb a.out list:列出源码break:设置断点run:运行程序next:下一条指令(会越过函数)step:下一步指令(进入函数)print:查看变量值continue:继续执行到下一个断点quit:退出调试 其他指令 run直接追段错误finish:结束函数调用start:运行程序,停在第一条执行语句set args:设置main函数命令行参数,或者run后面直接跟info b:查看断点信息b 10 if i=5:设置条件断点ptype:查看...

gdb的基本调试方法

1.怎么调试程序在linux下,我们通常用gcc来编译链接程序,用gdb来调试程序。在用gcc生成程序的时候,用-g选项来使程序可以调试:test@test-ThinkPad-Edge-E420s:~/gdb$ gcc -g -Wall gdbtest.c -o gdbtest然后在用如下命令调试程序:test@test-ThinkPad-Edge-E420s:~/gdb$ gdb gdbtest2.gdb的基本命令介绍run在gdb中运行你的程序,一般会在你设置的断点地方停止。start也是在gdb中运行程序,不过默认实在程序的main函数停止。break...

gdb调试用命令与一般调试方法【代码】

示例代码 1 #include <iostream>2usingnamespace std;3 4void Print()5{6 cout<<"helloworld"<<endl;7}8 9class TestDebug 10{ 11public: 12 TestDebug() 13 { 14 cout<<"TestDebug"<<endl; 15int temp=0; 16 ti = 0; 17while(1)//调试自动变量18 { 19if(++temp==10) 20break; 21 } 22 ti = temp; 23 } 2425void disPlayTi() 26 { 27 cout<<"ti:"<<ti<<endl; 28 ...

core文件与gdb调试

1. core 文件 2. 配置core程序崩溃时产生文件 3. 可修改core文件名 4. 产生core文件的情形 5. gdb调试core文件 a) gdb -c <xxx.core> [可执行程序] b) gdb命令:backtrace / bt c) gdb命令:up/down/frame d) gdb命令:info locals e) gdb命令:info args f) gdb命令:print <变量名> / print *<变量名>1. core 文件 linux/unix下,可执行程序崩溃时会产生core文件。cor...

gdb调试coredump文件【代码】【图】

"ulimit -c unlimited" >> /etc/profile 然后记得敲入命令 source /etc/profile 然后敲入命令: ulimit –c 效果如下:确认能否生成coredump文件,使用如下命令(使用时注意,我在测的时候会直接退出当前用户) kill -s SIGSEGV $$ 然后回到执行上述命令的路径下即可看到coredump文件,我这边生成的文件名为core.3477,依个人会随机生成不同的数字。 2、调试coredump文件 调试方式为: gdb program coredump文件 例如我的可执行文...

gdb调试用命令与一般调试方法【代码】

1 #include <iostream>2 using namespace std;3 4 void Print()5 {6 cout<<"helloworld"<<endl;7 }8 9 class TestDebug 10 { 11 public: 12 TestDebug() 13 { 14 cout<<"TestDebug"<<endl; 15 int temp=0; 16 ti = 0; 17 while(1)//调试自动变量 18 { 19 if(++temp==10) 20 break; 21 } 22 ti = temp; 23 } 24 25 voi...

GDB调试汇编堆栈过程分析【图】

分析 使用gcc -g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器。 进入之后先在main函数处设置一个断点,再run一下,使用disassemble指令获取汇编代码,用i(info) r(registers)指令查看各寄存器的值: 主函数的栈基址为 0xffffcf98 用x(examine)指令查看内存地址中的值,%esp:0,%ebp:0call指令将下一条指令的地址入栈,此时%esp,%ebp和堆栈的值为:将上一个函数的基址入栈...

gdb调试的常用参数说明

就会生成待调试信息的hello可执行程序gdb hello 就会进入调试状态查看源代码: l 查看main源代码(L的小写,不是数字1),list的缩写 l [filename:linenum] 查看指定文件的指定行的源代码 继续查看按l l [filename:func] 查看指定文件的指定函数的源代码 继续查看按l设置断点: b [linenum] 第几行打断点,或者break的缩写 b [10] if [i==5] 就是在第十行当i等于5时停下 b [func] 在func函数入口处打断点 del/d [num] 删除断点,...

gdb调试

描述backtrace(或bt) 查看各级函数调用及参数finish 连续运行到当前函数返回为止,然后停下来等待命令frame(或f) 帧编号 选择栈帧info(或i) locals 查看当前栈帧局部变量的值list(或l) 列出源代码,接着上次的位置往下列,每次列10行list 行号 列出从第几行开始的源代码list 函数名 列出某个函数的源代码next(或n) 执行下一行语句print(或p) 打印表达式的值,通过表达式可以修改变量的值或者调用函数quit(或q) 退出g...

线程的查看以及利用gdb调试多线程【代码】

<unistd.h> #include <pthread.h> #include <stdlib.h> #include <string.h>void* pthread_run1(void* arg) {(void)arg;while(1){printf("I am thread1,ID: %lu\n",pthread_self());sleep(1);} }void* pthread_run2(void* arg) {(void)arg;while(1){printf("I am thread2,ID: %lu\n",pthread_self());sleep(1);} }int main() {pthread_t tid1;pthread_t tid2;pthread_create(&tid1,NULL,pthread_run1,NULL);pthread_create(&tid2,N...

GDB调试

1,使用bt(backtrace )命令查看当前堆栈(gdb) bt #0 muduo::Poller::poll (this=0x62e010, timeoutMs=10000,activeChannels=0x7fffffffe3c0) at Poller.cc:31 #1 0x0000000000403f60 in muduo::EventLoop::loop (this=0x7fffffffe390)at EventLoop.cc:80 #2 0x0000000000402876 in main () at test8.cc:41 #0:是当前执行的函数(栈帧)(fram) 2,使用f(frame)命令:查看当前frame(函数,栈帧)里的变量值等信息 3,使用f(...

20145234黄斐《信息安全系统设计基础》GDB调试汇编堆栈过程分析(1)

20145234黄斐《信息安全系统设计基础》GDB调试汇编堆栈过程分析(1)标签:alt padding 命令 ble 语言 跳转 编辑 rda 系统 本文系统来源:http://www.cnblogs.com/taigenzhenjun/p/6132130.html

GDB调试Core文件

关于Core文件Linux程序在运行过程中可能会出现奔溃的现象,此时启用Core文件可以记录程序的奔溃现场,方便事后查找问题。准备工作启用core文件 默认情况下的core文件是不启用的,即程序奔溃不会生成奔溃core文件,所以需要开启这个功能查看core文件状态ulimit -a如果core file size行为0,那么表示没有启用core文件,需要执行ulimit -c 2048重置core文件大小的上限,可以自定义文件大小上限值。设定core文件名和保存地址sudo echo ...

gdb调试多进程多线程程序【图】

list  function  显示程序名为function的函数的源程序list        显示当前行后面的源程序list -        显示当前行前面的源程序2.run(r):运行命令run args  run命令可以直接接命令行参数值,也可以在执行run之前通过 set args + 参数值实现3.break(b):打断点b  linenum    在某行打断点b +offset/-offset   在当前行的前面或者后面的offset停住b filename:linenum 在某文件的某行打断点b file...