gdb高阶调试命令

  • 断点

    • 条件断点
      • condition 1 value==1: 此次的1表示break的编号,之后的value==1表示条件判断;即在value为1时,命中编号为1的断点;
      • ignore 1 4: 忽略断点为1的前4次命中,第5次开始,就需要命中;
    • d br: 删除所有的断点
  • 打印

    • p /t var-name: 打印变量名var-name的二进制内容;
  • 如何定位动态库中的代码

    当编译debug时,符号文件会嵌入到可执行文件中(这一点不像Windows下的可执行文件和符号文件,它们是分开的。)

    只有在gdb中start运行起来之后,才会加载动态库,之后才可以对动态库的代码进行断点设置。在main函数之后,先设置一个断点,之后就可以设置动态库的代码。动态库加载之后,可以使用如下命令进行参考:

    • i sharedlibrary: 查看已经加载的动态库;
    • b 动态库中的代码所在的文件:行号:定位动态库中的所在文件的行号;
    • b 类名:函数名: 可以定位某一个类中的函数;
posted @ 2024-07-08 16:37  绍荣  阅读(1)  评论(0编辑  收藏  举报