IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]GDB基本命令

    lincyang发表于 2013-11-15 21:19:19
    love 0

            借用阿甘老妈的一句话:“Life is like a box of chocolates, you never know what you're going to get.”。

            自己做梦也不会想到,多年之后又回到Linux的世界中。生活中的事情有太多不确定性,但如果你准备的够充分,再怎么变化,也都在你的掌控之中。

    今天来把自己多年都没有完全记下的GDB相关的东西写在blog里,随我到任何国度也可以信手捻来。

            GDB是Linux世界中最常用的调试工具,主要功能就是下断点、单步、看变量的值,以及反汇编功能。其实并不复杂,而且你可以man一下它,就不怕自己忘记命令了。

    前提:

    编译出可调试的代码,例如:gcc -g test.c -o test

    用GDB调试:gdb test

    1.list命令(l)

            列出代码,可以带行数或方法名,例如:l 13 或 l main

    2.run命令

            将程序跑起来

    3.break命令

            下断点,例如:

         (gdb) break 函数名
         (gdb) break 行号
         (gdb) break 文件名:行号
         (gdb) break 文件名:函数名
         (gdb) break +偏移量
         (gdb) break -偏移量
         (gdb) break *地址

    4.单步

            next(n)单步执行,不会进入函数内部

            step(s)却可以

            until(u)直接退出循环体

    5.continue(c)

            继续,直到程序结束或下一个断点

    6.print

            程序停住后,打印运行数据

    7.watch

            观察某个表达式,一旦有变化,就停止运行并打印出相应的值。

    8.examine

            查看内存地址中的值

    9.jump

           参数可以是行号也可以是地址

    10.signal

            产生一个信号量,1~15(参见UNIX的信号量)

    11.return

            强制返回

    12.call

            强制调用某函数

    13.info

            查看信息如:

            info registers

            info all-registers

            info registers <指定寄存器>

            info break

            info watchpoints

            info signals

            info handle

    14.disassemble

            反汇编,如:

            disass main


    参考:

            《Linux设备驱动开发详解》

            《C语言开发手册》

            《Debug Hacks》



沪ICP备19023445号-2号
友情链接