zoukankan      html  css  js  c++  java
  • 再探gdb经常使用命令

    

    前面已经有了一篇对gdb经常使用命令的总结。见 http://blog.csdn.net/u011848617/article/details/12838875 

    这里对眼下学过的gdb命令进行了较完整的整理。


    1、使用gdb调试代码,就要在编译时加入-g选项。

    2、gdb -q —————— 启动gdb时不输出版权说明

    3、gdb打开文件:
      (1)gdb filename;
      (2)先输入gdb,然后在gdb命令行输入file filename。

    4、gdb选项(gdb中好多命令都有自己的简写字母):
       不输入直接回车 ------------ 反复运行上一条命令
       q(quit) ------------------- 退出gdb
       file filename ------------- 打开文件filename
       l(list) ------------------- 显示10行代码。若再次执行则显示接下来10行代码
       list 5,10 ---------------- 显示第5到10行的代码
       list test.c:5,10 -------- 显示源文件test.c中第5到10行的代码
       list get_sum -------------- 显示get_sum函数周围的代码
       list test.c:get_sum ------- 显示源文件test.c中get_sum函数周围的代码
       shell XXX ----------------- 执行shell命令XXX
       search/forward str -------- 从当前行向前查找第一个匹配的字符串str
       reverse-search str -------- 从当前行向后查找第一个匹配的字符串str
       r(run) -------------------- 执行程序
       help XXX ------------------ 查看命令XXX的用法
       help all ------------------ 查看全部命令的用法
       whatis 变量或表达式 ------- 显示变量或表达式的数据类型
       set variable 变量=值 ------ 给变量赋值
       kill ---------------------- 结束当前程序的调试
       continue ------------------ 让程序继续执行,直到下一个断点或者执行完为止
       n(next) ------------------- 继续运行下一条语句,遇到函数把函数当作一条语句来运行
       step ---------------------- 继续运行下一条代码,遇到函数会跟踪进入函数
       nexti/stepi --------------- 单步运行一条机器指令
       watch 变量名 -------------- 设置变量监測点
       bt(backtrace) ------------- 显示程序当前执行位置和对当前位置的栈跟踪
       display 变量或表达式 ------ 加入观察点。以后每次执行命令都会显示相应变量或表达式的值
       undisplay num ------------- num为设置的display编号,能够用info display获取。不能用变量名

    5、设置断点:
       b(break) 行号 ----------------------- 在第n行设置断点
       break fun_name ---------------------- 为函数fun_name设置断点
       break 行号或函数名 if 条件 ---------- 程序在执行中。当条件满足时。在某行中断暂停执行
       watch 条件表达式 -------------------- 程序执行中,满足条件时暂停执行,不须要写行号
       info breakpoints -------------------- 查看当前全部的断点
       disable 断点编号 -------------------- 使断点n失效
       enable 断点编号 --------------------- 使断点n有效
       clear ------------------------------- 删除本行断点(假设存在的话)
       clear 行号 -------------------------- 删除此行断点
       clear 函数名 ------------------------ 删除该函数的断点
       delete 断点编号 --------------------- 删除指定编号的断点

    6、print命令:
       print XXX ------------------------------- 打印输出XXX的值
       print 变量 = 值 ------------------------- 对变量赋值
       print 表达式@要打印值的个数n ------------ 打印以表达式值開始的n个数

    7、watch和display设置监測点的差别:
       watch监測仅仅有当监測的变量值发生变化时才显示变量,并且旧值和新值都会显示。
       display监測每一次执行命令都会显示变量的值,仅仅会显示变量的最新值。


  • 相关阅读:
    第九章(二)DAG上的动态规划
    第九章 (一)动态规划
    第八章(三)滑动窗口
    第八章 (二)贪心法
    斐波那契数列
    第七章 (四)BFS(路径寻找问题)
    TensorFlow——Graph的基本操作
    TensorFlow——共享变量的使用方法
    TensorFlow——常见张量操作的API函数
    TensorFlow——TensorBoard可视化
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7149916.html
Copyright © 2011-2022 走看看