zoukankan      html  css  js  c++  java
  • 使用gdb调试

      gdb GNU 发布的一个强大的程序调试工具,也是 Linux 程序员不可或缺的一大利器。
    本章我们将给出 gdb 常用的命令的操作说明。

    -----------------启动 gdb ------------------

    使用 gdb 的前提:
    $ gcc -g hello.c -o hello (编译的时候不要忘了-g参数)

    启动 gdb 调试:
    $ gdb hello

    然后就可以进入命令行操作,和 Shell 一样,gdb 支持命令补全。输入几个字母,按 Tab 键,
    gdb 会补全命令。按两次 Tab ,会提示所有可能的命令。
    另外,其还支持命令缩写,如, h 代表 help 。

    ----------------常用命令如下:---------------

    获取帮组命令 help
    gdb 将命令分为 12 个大类,使用命令: “help 子类别”可以查看没类下面的详细帮助。
    如: help breakpoints


    设置断点

    break 命令用于设置断点,命令接受行号或者函数名作为参数。 

    break 也可设置条件断点:
    如: break syaHello if count<1
    使用 info break 可以查看断点
    使用 clear 可以清除断点

    运行程序和单步执行
    设置完断点后,就可以运行调试程序了,使用 run 命令(缩写为 r)运行程序至断点。



    此时,程序中断, gdb 等待用户发出下一步操作的指令。设用 next 命令(缩写为 n)单步执
    行程序。也可以指定一个数字。下面这条命令让 gdb 连续执行两行,然后停下。

    如果想继续运行,可以使用 continue 命令(缩写为 c )指导 gdb 继续运行程序,直至遇到下
    一个断点。
    如果想继续单步执行,可以继续使用 next,也是以使用 step (缩写为 s), step next 的最大
    的区别在于, step 遇到函数是会进入到内部,而 next 不会进入内部
    .


    监视变量
    调试程序最基本的需求就是监视变量的值,可以使用 print 命令(缩写为 p) 显示指定变量
    的值。


    如果要时刻监视某个变量的值,那么每次使用 print 就不方便。比较人性化的是,gdb 提供
    watch 命令,用于设置另一种断点:“观察点”。
    用法是: watch
    变量名或表达式作为参数,一但值发生变化,就停下来。

    临时修改变量
    当某些特殊情况下,我们想让程序进入一些特殊的流程时, gdb 允许用户在程序运行时改变
    变量的值,通过 set var 命令实现这一点。

    查看堆栈情况
    每次程序调用一个函数,函数的地址、参数、函数内部变量都会被压入“栈” (Stack) 中,
    运行时堆栈信息对于程序员非常重要,使用 “bt”命令可以看到当前运行时栈的情况。



    退出 gdb
    调试完毕,使用 quit 命令(缩写为 q) 退出 gdb 程序。



    ————雁过留痕,风过留声,人的记忆是一种很不靠谱的东西。记下这些笔记,希望自己能够在需要的时候有所回忆,也希望能够帮助哪些需要获取这些知识的人。
  • 相关阅读:
    板邓:php获取数组元素个数
    板邓:PHP解决Using $this when not in object context in【转】
    板邓:MYSQL distinct关键字查询重复值只显示一条记录
    板邓: php 过滤文章的html标签方法
    板邓:PHP使用mb_strimwidth截取中文字符串方法大全
    板邓:php str_replace单双引号的替换问题
    板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
    板邓:wordpress自定义伪静态 WP_Rewrite
    板邓:wordpress获取当前页面的id、别名
    获取文件夹名
  • 原文地址:https://www.cnblogs.com/wangkeqin/p/9165008.html
Copyright © 2011-2022 走看看