`
suoyihen
  • 浏览: 1352274 次
文章分类
社区版块
存档分类
最新评论

[C++] gdb高级调试方法

 
阅读更多

1,启动gdb的时候自动执行脚本

gdb -x your_script

注意:your_script里面只能有gdb命令。不过我们都知道gdb命令里面有个shell指令,所以实际上这里可以做任何事。


2,调试运行中的进程

在gdb里面有个attach指令,可以调试运行中的进程。

结合上面的-x参数,实际上我们可以写一个脚本,自动的attach到我们关心的进程上面,然后自动的做很多事情:比如设置trace命令并且continue。


3,设置条件断点

break test_func() if x == 5

可以在x == 5 的时候中断在test_func()里面


4,在断点自动执行命令

break test_func() if x == 5

commands

>shell ls

>continue

>end

可以在命中断点的时候自动执行命令。


5,结合以上各点,我们可以做什么呢?

我们可以调试运行中的一个进程,当发现进程尝试mallc()超过100KB的内存块的时候,就写一行日志然后给ops发一封电子邮件。

我们还可以调试运行中的一个进程,让这个进程把它的每个细节都打印到日志里面去。

我们可以让这个运行中的进程,在任何条件下执行任何他自己的任何函数。

我们可以让这个运行中的进程,进行各种跳转。

简单的说我们可以控制这个进程,做任何事情。

这基本上是一个C++版的AOP(面向切面编程)了。而且更底层、更彻底。


分享到:
评论

相关推荐

    GDB调试流程及命令大全

    GDB(GNU调试器)是一种功能强大的命令行调试工具,常用于C、C++、汇编等编程语言的调试。它支持多种平台和格式,可以在Linux、UNIX和Windows等操作系统上使用。GDB提供了很多调试功能,包括设置断点、单步执行、...

    《Android C++高级编程——使用NDK》_源码.zip

    主要内容:● 使用JNI将原生代码连接到Java中● 使用SWIG自动生成JNI代码● 使用POSIX线程实现多线程应用● 使用POSIX套接字实现网络应用● 使用logging、GDB和Eclipse调试器进行调试● 使用Valgrind分析内存● 使用...

    Android C++高级编程: 使用NDK

    Android是移动电话市场的主要角色而且其市场份额正在持续增长。... 用logging、GDB和Eclipse调试器调试原生代码。  用Valgrind分析内存问题。  用GProf测试应用性能。  用SIMD/NEON优化原生代码。

    Android C++高级编程使用NDK

    《移动开发经典丛书:Android C++高级编程:使用NDK》提供了移植、开发以及利用... 用logging、GDB和Eclipse调试器调试原生代码。  用Valgrind分析内存问题。  用GProf测试应用性能。  用SIMD/NEON优化原生代码。

    gdb用户手册(第十版 201909).zip

    调试技术是每个开发人员必备的技能,对调试工具使用的熟练程度是区别初级开发者和高级开发者的一个指标。如果想成类unix的c/c++的高级开发者,你需要这本gdb用户手册 第十版。

    eclipse 开发c/c++

    这些插件将 C/C++ 透视图添加到 Eclipse 工作台(Workbench)中, 现在后者可以用许多视图和向导以及高级编辑和调试支持来支持 C/C++ 开发。 由于其复杂性,CDT 被分成几个组件,它们都采用独立插件的形式。 每个...

    计算机课程设计:C++、java和Python介绍与学习技巧.docx

    - 学会使用调试工具,如gdb、valgrind等。 ## Java Java是一种广泛应用于企业级开发的高级编程语言,具有跨平台、安全、健壮等特点。学习Java需要掌握基本语法和面向对象的思想,了解JVM、多线程、网络编程等基础...

    pro-android-c-w-ndk-master.tar

    《移动开发经典丛书:Android C++高级编程:使用NDK》提供了移植、开发以及利用... 用logging、GDB和Eclipse调试器调试原生代码。  用Valgrind分析内存问题。  用GProf测试应用性能。  用SIMD/NEON优化原生代码。

    Qt高级开发视频教程-QT视频教程下载

    2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整...

    QT-Creator-win-opernsource-2.4.0.exe

    Qt Creator是跨平台的 ... 在功能方面,Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工具等。

    Linux高性能服务器编程

    16.2.1 procsysfs目录下的部分文件 16.2.2 procsysnet目录下的部分文件 16.3 gdb调试 16.3.1 用gdb调试多进程程序 16.3.2 用gdb调试多线程程序 16.4 压力测试 第17章 系统监测工具 17.1 tcpdump 17.2 lsof ...

    gnu emacs-24.3

     收发电子邮件 通过FTP/TRAMP编辑远程档案 通过Telnet登录主机 上新闻组 登陆IRC和朋友交流 查看日历 撰写文章大纲 对多种编程语言的编辑 调试程序,结合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等等 玩游戏 ...

    OpenMC集成DAGMC-Linux-centos7.9系统下离线编译源包及对应的三方库包

    OpenMC 的独特功能之一是其丰富、可扩展的 Python 和 C/C++ 编程接口,支持编程预处理和后处理、多组横截面生成、工作流自动化、耗尽计算、多物理场耦合以及几何图形和计数的可视化结果。除了核心的 Monte Carlo ...

    嵌入式\(高校应用案例)北航软件学院

    ZKQ090103 Linux 开发环境与应用程序设计 Linux C 编程基础,gdb调式器,Makefile文件概述;Linux系统调用原理;基于系统调用的文件I/O操作;文件上锁,程序机制与功能,特殊文件的操作;串口编程,串口通信的实现;...

    操作系统(内存管理)

    在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、半手工的以及自动的内存管理实践的基本概念。 追溯到在 Apple II 上进行汇编语言编程的时代,那时内存管理还不是个大问题。您实际上在...

    Linux指令一周通 (技术图书大系).azw3

    7.8 gdb指令:GNU调试器 7.9 gdbserver指令:远端GNU服务器 7.10 ld指令:链接目标文件和库文件 7.11 make指令:编译内核或模块 7.12 nm指令:显示目标文件中的符号 7.13 startx指令:启动x-Windows图形界面 7.14 ...

Global site tag (gtag.js) - Google Analytics