• gdb之小试牛刀


            在linux下编程的调试工具往往比较少,其中比较有名的就是gdb。而由于程序都是在ARM板子上跑,往往会由于资源不够,连gdb都无法运行。所以之前调试跟踪问题往往也只是用简单的printf来解决,都没怎么用过gdb。但是今天遇到了一个printf无法跟踪的问题,这时才想起来gdb。通过应用gdb,发现gdb功能真是强大,下面记录了一下我用到的命令。
    ./gdb testprogram   :表示用gdb去跑testprogram这个程序,由于我的gdb程序是在当前目录下,所以前面加了./ 如果gdb在系统环境变量的目录中(比如/bin)的话就直接运行gdb testprogram就行。ps:有时候在嵌入式环境下开发的时候经常会用gdb观察core文件,则运行指令则应该是在后面再加上core文件名,比如:./gdb testprogram core
    r                   :表示执行程序,是run的缩写,也可以输入run。如果程序中断后,再输入r的话,表示从头重新执行。
    ctrl + c          :这个不是输入命令,而是在程序运行过程中,通过这个组合键来实现即时的中断程序。
    bt n              :在程序被中断运行的情况下,显示程序压栈的情况。其实就是看依次调了那几个函数。n就是表示想要观察的调用层数。
    f n                :结合bt n使用,使程序状态返回到相应层数的函数作用域中。主要是为了便于观察局部变量。如果不到相应的函数调用层,是无法打印相应作用域的变量的。
    p x               :print的缩写,打印x变量的值,x可以是表达式。*以及&等都能用,非常强大。
    break linenum:设置断点。linenum表示行号。如果一个文件的话,直接写行号就行。如果多个文件的话,可以用文件名:行号的格式,比如break test.c:8 就表示在test.c的第8行设置断点。
    cont              :continue的缩写,在程序被中断后,输入此命令可使程序继续执行。
    next              :单步运行程序,遇到函数调用时,next会把该函数调用当作一条语句来执行。
    step              :单步运行程序,但是和next不同的是当遇到函数调用时,step会跟踪进入函数一次一条的执行函数内的代码。
    q                  :quit的缩写,表示退出gdb。  

  • 相关阅读:
    Entity Framework 博客园专题
    部分视图调用方法总结(Action 、 RenderAction 、 Partial 、 RenderPartial)
    vs2010下安装asp.net MVC3顺序
    _viewstart.cshtml的作用
    c# yyyyMMdd,dd/MM/yyyy 类型字符串转换为datetime 类型
    c# datetime用法总结
    SQL中的每一张表都必须设有主键吗
    数据库到底用不用外键
    mysql 数据库数据迁移 The user specified as a definer ('root'@'%') does not exist 解决方法
    项目--解决MySQL数据库插入中文乱码
  • 原文地址:https://www.cnblogs.com/nightwatcher/p/2169249.html
Copyright © 2020-2023  润新知