转载gdb

原创

GDB 的几个用法(until, finish, tui)

1. until

这个用于执行完循环。

在执行完循环体内的最后一条语句之后执行 until, 就会执行完循环体到后面的一个语句停下。

2. finish

执行完当前的函数。

3. tui

是一个命令行的界面,能同时把代码显示出来。

inf


4. 设置条件断点的方法:

4.1 break [location]  if condition


   
   
   
   
  1. (gdb) l
  2. 2 {
  3. 3 int i;
  4. 4 int k = 0;
  5. 5 for(i = 0; i < 10; i++)
  6. 6 {
  7. 7 k = i * i;
  8. 8 }
  9. 9
  10. 10 return 0;
  11. 11 }
  12. (gdb) break 7 if i == 5
  13. Breakpoint 4 at 0x80483ca: file testloop.c, line 7.
  14. (gdb) r
  15. The program being debugged has been started already.
  16. Start it from the beginning? ( y or n) y
  17. Starting program: /home/charles /code/testloop
  18. Breakpoint 4, main () at testloop.c: 7
  19. 7 k = i * i;
  20. (gdb) p i
  21. $7 = 5
  22. (gdb)
4.2 使用 condition  N condition.  N是一个 breakpoint number.


   
   
   
   
  1. (gdb) l
  2. 1 int main(void)
  3. 2 {
  4. 3 int i;
  5. 4 int k = 0;
  6. 5 for(i = 0; i < 10; i++)
  7. 6 {
  8. 7 k = i * i;
  9. 8 }
  10. 9
  11. 10 return 0;
  12. (gdb) break 7
  13. Breakpoint 1 at 0x80483ca: file testloop. c, line 7.
  14. (gdb) info breakpoints
  15. Num Type Disp Enb Address What
  16. 1 breakpoint keep y 0x080483ca in main at testloop. c: 7
  17. (gdb) help condition
  18. Specify breakpoint number N to break only if COND is true.
  19. Usage is `condition N COND', where N is an integer and COND is an
  20. expression to be evaluated whenever breakpoint N is reached.
  21. (gdb) condition 1 i == 4
  22. (gdb) info breakpoints
  23. Num Type Disp Enb Address What
  24. 1 breakpoint keep y 0x080483ca in main at testloop. c: 7
  25. stop only if i == 4
  26. (gdb) r
  27. Starting program: /home/charles/code/testloop
  28. Breakpoint 1, main () at testloop. c: 7
  29. 7 k = i * i;
  30. (gdb) p i
  31. $ 1 = 4


5. 多线程下禁止线程切换:

set scheduler-locking on


0 个人打赏
文章最后发布于: 2014-07-16 23:08:13
        

恢复 nouveau驱动

05-06 阅读数 4755

之前从nouveau换到Nvidia官方驱动,现在又想换回来。步骤如下:1. 删除文件 /etc/X11/xorg.conf(最好不直接删除,备份一下):sudomv/etc/X11/xorg.con... 博文 来自: 小猪爱拱地

gdb gdbtui

08-07 阅读数 787

1.gdbtui打开tui模式gdbtuia.outgdb-tuia.out调试一个正在运行的进程gdb-ppid在linux自带的终端里是正常显示的,但是在securecrt里面,可能由于编码的问题... 博文 来自: 超哥的专栏

gdb中显示源码(gdbtui使用方法)

11-04 阅读数 1685

原文链接:gdb调试一直是一个让人头疼的问题,我这个多年的linux用户也一直不习惯gdb,主要是因为gdb在调试的时候不能很好的展示源码。gdb里面可以用list命令显示源码,但是list显示没有代... 博文 来自: yuanhubilie的专栏

调试的时候怎么跳出循环语句

03-29

调试代码的时候,单步一句一句下来,遇到一个for语句要循环500次,总不能按500下F10吧,怎么跳到下一语句? 论坛

gdb函数相关3——退出正在调试的函数

11-28 阅读数 1626

测试代码#include&amp;lt;stdio.h&amp;gt;intfunc(){ inti=0; i+=2; i*=10;returni;}intmain(intargc,c... 博文 来自: CSDN_dzh的博客

gdb详解

11-04 阅读数 1万+

程序的调试过程主要有:单步执行,跳入函数,跳出函数,设置断点,设置观察点,查看变量。本文将主要介绍linux下的强大调试工具是怎么完成这些工作的。之所以要调试程序,是因为程序的运行结果和预期结果不一致... 博文 来自: 袭人的专栏

gdb的u命令并不能退出循环,为何?

09-13

一个非常简单的main函数,里面包含一个循环,如下所示: #include int main() { for(int i=0;i<30;++i) printf("%d\n",i); 论坛

GDB调试命令详解

09-01 阅读数 2万+

详解一1.简介GDB(GNUDebugger)是GCC的调试工具。其功能强大,现描述如下:GDB主要帮忙你完成下面四个方面的功能:1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2.可让... 博文 来自: 上善若水 的专栏

你可能感兴趣的:(转载,Linux)