zoukankan      html  css  js  c++  java
  • gdb

    start&run

      使用run/r或者start命令,GDB建立子进程来运行被调试程序。run和start命令稍有不同,即run仅仅加载程序然后运行,而start会在程序的入口函数(main)设置一个临时断点,程序运行到那里就会暂停,临时断点也随即被清除。另外run和start命令后面都可以加上传递给被调试程序的参数,若不加参数则使用GDB启动时传递的参数或者使用set args命令设置的参数。

    [设置断点] 

      b 12  表示在12行设置断点 : 这里的断点设置在这个项目的主程序文件里面在,如果要在其他文件设置断点,需要加上其他文件名称例如 :

      b uploadmgr.c:upload 表示在uploadmgr.c文件的upload函数打上断点。

      b uploadmgr.c:12  表示在uploadmgr.c文件的12行打上断点.

      d n : 删除指定编号的某个断点

      rbreak 可以用正则表达式来设置断点,这个还是比较有用,比如你想给一个文件所有函数设置断点:

      rbreak xxx.c:*

      就行了,但是有个要求,你这个程序必须已经处于调试状态了,也就是run 之后来设置才有效。不然设置了没反应。

      info b: 查看断点

    [layout模式]

      layout : 进入layout模式

      ctrl + x + a : 进入layout模式

      -argc 给启动的程序传递参数

    [打印变量] 

      当我们要打印某个复杂变量的时候,可以先用pt 打印出改变量的数据结构,然后在打印比较感兴趣的值。比如:

    (gdb) pt progress

    type = struct RequestReader::PostProgress {

        apr_uint32_t id;

        apr_uint64_t total_size;

        apr_uint64_t read_size;

        apr_time_t end_time;

        bool is_succeeded;

        apr_size_t item_id;

    }

      p 打印变量的值

    [继续运行]

      c : 继续运行

      r : 从头开始跑程序

  • 相关阅读:
    事件处理(三)
    事件处理(二)
    事件处理(一)
    布局管理器(一)
    基本控件(三)
    基本控件(二)
    基本控件使用(一)
    Activity与界面
    多态
    final关键字
  • 原文地址:https://www.cnblogs.com/tekkaman/p/2984746.html
Copyright © 2011-2022 走看看