• 新手入门之GDB调试


    写这篇文章算是对最近两天工作的一个经验总结吧。

    要让可执行文件比较方便地在DGB上调试,在用gcc编译的时候要使用-g选项。

    如何使用GDB启动被调试程序?

    "gdb path_to_debugee”,其实这还不是真正的启动,要启动调试程序,还需要在命令行里敲"r"。如果debugee在启动时还要有相应的输入参数,比方说:debugee –p1,那么在前面提到的r命令后面,附带上-p1就可以了,完整的样子看上去是这样的:"r –p1"。

    设置断点

    通过gdb path_to_debugee启动调试后,就可以设置断点了。设置断点的命令很直观,break。我们可以:

    • 在函数的入口设置断点,比方说“break main”。也可以通过类名来限定目标函数。比方说“break classA::func”。
    • 根据行号设置断点:break line_number。这条命令默认的行在当前运行的编译单元对应的原文件中。如果要指定某个文件中的某行,请使用:break file.cpp:line_number。
    • 条件断点:条件断点的设置和前面提到的类似,就是要加一个判断条件:if condition。类似于“break func/line if some_variable > or < num”的形式。

    单步调试

    单步有两种形式:

    • 单步执行并跳过这一行(VS F10功能):n
    • 单步执行并进入(VS F11功能):s

    打印变量

    这个比较简单,命令行:p var_name

    打印堆栈

    命令行:backtrace,简写bt

    打印源代码

    命令行:l。这个命令接受参数。比方说要打印从第几行到第几行,可以这么做:l 1,18。这会打印当前执行文件第1行到18行的代码。要打印某个函数,可以是:l function_name。要打印某个成员函数:l classname::memfunc。

    结束调试程序

    kill

    结束语

    附上一些资源,供向我这样的初学者参考:

  • 相关阅读:
    前端页面实现报警器提示音效果
    Bootstrap相关优质项目学习清单
    Bootstrap相关优质项目学习清单
    [慕课笔记] node+mongodb建站攻略
    基础知识(11)- 异常、断言、日志和调试
    洛谷 P2580 于是他错误的点名开始了
    codevs 4189 字典
    HDU 1251 统计难题
    HDU 1827 Summer Holiday
    HDU 3836 Equivalent Sets
  • 原文地址:https://www.cnblogs.com/wpcockroach/p/3273409.html
Copyright © 2020-2023  润新知