• @清晰掉 GDB调试器中的战斗机



     
     
    小盐
    2010-03-13 22:36:15 小盐 (看偶销魂的架势!喂,要盐么?)

    1.what is gdb? 
    一个调试器,能让你观察到正在运行的程序的某个变量的值,和gcc, emacs组成构建起整个gnu system的3剑客。 

    2.How it work? 
    首先要安装,然后就可以 gdb application,进入gdb模式,执行(run)启动例程。(list-显示源码) 

    3.一个优点 
    GDB的函数调用是缓式的,也就是说只有当变量真正需要时才会被计算。 
    int c = add(1,1) 
    printf("%d",c); 

    gdb-->run-->print c -1222342. c的值直到打印的时候才会被计算。(这里可能有个开关来控制缓式计算) 

    4.一个前提 
    gcc 的时候加上 -g 或者 -ggdb,主要是生成供调试使用的某些信息。(emacs好像默认是关闭这个选项) 

    5.存在图形调试界面 

    6.输入help可以查看帮助 
    help,会显示命令的分类,help 类名 

    7.how use? 
    debug 3 program yourself. 

    8.常用命令(From:http://my.donews.com/tangfl/2006/10/23/gdb-debug-example/) 
      break NUM 在指定的行上设置断点。 
      bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。 
      clear 删除设置在特定源文件、特定行上的断点。其用法为clear FILENAME:NUM 
      continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而 导致停止运行时。
      display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。 
      file FILE 装载指定的可执行文件进行调试。 
      help NAME 显示指定命令的帮助信息。 
      info break 显示当前断点清单,包括到达断点处的次数等。 
      info files 显示被调试文件的详细信息。 
      info func 显示所有的函数名称。 
      info local 显示当函数中的局部变量信息。 
      info prog 显示被调试程序的执行状态。 
      info var 显示所有的全局和静态变量名称。 
      kill 终止正被调试的程序。 
      list 显示源代码段。 
      make 在不退出 gdb 的情况下运行 make 工具。 
      next 在不单步执行进入其他函数的情况下,向前执行一行源代码。 
      print EXPR 显示表达式 EXPR 的值。 
    backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where) 
    breakpoint 在程序中设置一个断点 
    cd 改变当前工作目录 
    clear 删除刚才停止处的断点 
    commands 命中断点时,列出将要执行的命令 
    continue 从断点开始继续执行 
    delete 删除一个断点或监测点;也可与其他命令一起使用 
    display 程序停止时显示变量和表达时 
    down 下移栈帧,使得另一个函数成为当前函数 
    frame 选择下一条continue命令的帧 
    info 显示与该程序有关的各种信息 
    jump 在源程序中的另一点开始运行 
    kill 异常终止在gdb 控制下运行的程序 
    list 列出相应于正在执行的程序的原文件内容 
    next 执行下一个源程序行,从而执行其整体中的一个函数 
    print 显示变量或表达式的值 
    pwd 显示当前工作目录 
    pype 显示一个数据结构(如一个结构或C++类)的内容 
    quit 退出gdb 
    reverse-search 在源文件中反向搜索正规表达式 
    run 执行该程序 
    search 在源文件中搜索正规表达式 
    set variable 给变量赋值 
    signal 将一个信号发送到正在运行的进程 
    step 执行下一个源程序行,必要时进入下一个函数 
    undisplay display命令的反命令,不要显示表达式 
    until 结束当前循环 
    up 上移栈帧,使另一函数成为当前函数 
    watch 在程序中设置一个监测点(即数据断点) 
    whatis 显示变量或函数类型

  • 相关阅读:
    Java实现 LeetCode 679 24 点游戏(递归)
    Java实现 LeetCode 678 有效的括号字符串(暴力+思路转换)
    Java实现 LeetCode 678 有效的括号字符串(暴力+思路转换)
    Java实现 LeetCode 678 有效的括号字符串(暴力+思路转换)
    Java实现 LeetCode 677 键值映射(字典树)
    Java实现 LeetCode 677 键值映射(字典树)
    Java实现 LeetCode 677 键值映射(字典树)
    Java实现 LeetCode 676 实现一个魔法字典(暴力)
    PHP empty() 函数
    PHP floatval()、doubleval () 函数
  • 原文地址:https://www.cnblogs.com/ysdu/p/4887200.html
Copyright © 2020-2023  润新知