zoukankan      html  css  js  c++  java
  • 1、GDB程序调试

    GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说GDB主要完成下面四个部分的功能。

    1)启动你的程序,可以按照你的自定义的要求运行程序。

    2)可让被调试程序在你所指定的调试的断点处停住(断点可以使条件表达式)。

    3)当程序被停住时。可以检查此时你的程序中所发生的事,包括查看当前状态下程序中指定变量的值。

    4)动态的改变你程序的执行环境。

    步骤:

    1、先使用vi编辑器编辑文件test.c,用于GDB调试器调试。

    2、使用命令gcc -g test.c -o test,编译test.c,生成包含标准调试信息的文件test。

    3、使用命令gdb test,启动gdb进行调试,在gdb的启动界面中显示了gdb的版本、自由软件等信息,按回车确认后进入了由"gdb"为提示符的命令界面。

    4、使用l(list)命令,查看源文件,可以看到每行代码中都有行号,这样方便我们设置断点。注意:使用l命令,默认从代码开头,一次显示10行的内容,再次使用l命令,显示接下来的10行,显示指定行的 内容,可以使用l(list) [起始行],[结束行]的命令。例如 l 3,9,查看3到9行的内容。

    5、使用b(break)命令,查看源文件,可见只需在命令“b”后加上对应的行号,就能在该行设置上断点,在程序运行起来后,一当遇到断点就会停在断点所在行之前。

    6、使用命令info b,查看断点设置情况

    7、使用命令r(run)运行代码,默认是从程序开头开始执行,当执行到断点处,程序就停止了,另外,还可以通过此命令向程序传入参数,格式为run [参数1] [参数2].....

    8、使用命令p(print),格式为p [变量名],查看变量的值

    9、使用命令s(step),进行单步调试,当遇到函数时,执行s会跳入函数中,并且每输入一次s命令,程序会向下执行一步。

    10、使用命令n(next),进行单步调试,遇到函数时,执行n不会进入函数中,而将函数也作为一步执行。

    11、使用命令finish,挑出一个函数(将这个函数运行完)。

    12、使用c(continue),恢复程序运行,我们在程序代码中设置了两个断点,当程序停在第一个断点后,我们可以使用c命令使程序继续跑起来,直到第2个断点处。

    13、使用命令q(quit),退出gdb的调试。

    总结:

    l(list) [行号]:显示代码中[行号]处10行内容。

    l(list) [文件名] [行号]/[起始行号],[结束行号],指定list的文件名

    p(print):除直接跟变量名外,还可跟函数调用。print add(3,4)

    whatis:查看变量类型,格式为whatis [变量名]

    break(b):b [行号]:在指定行设置断点

    break [函数名]:在进入指定函数时,程序将终止

    break [行号]/[函数名] if [条件]:在条件成立时,才会停止。

    break [例程入口]:当程序包含多个代码文件时,进入到指定的文件才会停止。

    tbreak:设置临时断点,到达后被自动删除,用法同break。

    delete(d):删除断点,格式为:d(delete) [断点标号],不带标号则删除所有断点。

    disable/enable:除能或使能断点,格式为disable/enable [断点标号],如果不带断点标号,则对所有都做相应操作。

    condition:格式:condition [断点号]<条件表达式>,用来修改对应断点的条件。

    ignore:格式:ignore [断点号] <num>执行时忽略断点号num次

    set:设置变量的值,格式为:set [变量名]=[值]

    help(h):查看指定命令的使用方法:help(h) [命令名]。

     

    函数学习方法:

    假设学习打开文件这个函数

    首先到《UNIX环境高级编程》中找到open这个函数,那么要怎么使用这个函数呢?把这个函数名带入man命令,找出其参数和返回值,就可以知道怎么使用了

  • 相关阅读:
    Codeforces 371D Vessels
    HDU1272小希的迷宫–并查集
    golang:exported function Script should have comment or be unexported
    动态规划--0,1背包问题(再也不怕类似背包问题了)
    golang数据结构之稀疏数组
    向github中已创建好的repository提交文件
    java(二)变量
    使用Git上传文件到github
    java(一)基础知识
    pytorch--基础类型之间的转换
  • 原文地址:https://www.cnblogs.com/gary-guo/p/5551633.html
Copyright © 2011-2022 走看看