`
mypyg
  • 浏览: 549416 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用GCC的参数跟踪程序运行过程

阅读更多
当接手新项目时,通过此方法可以迅速了解程序运行期间各个函数的调用关系,来帮助熟悉代码。



首先:

gcc编译时加上参数 -finstrument-functions 。

加上此参数则需要自己实现约定好的4个函数,通过这4个函数来实现跟踪。

4个函数的实现代码在gmail。



通过这4个函数,将每次调用时的函数地址输出到文件,然后使用addr2line转换成函数名。



这个步骤的代码实现在gmail:treefunc.c



附注:

整个跟踪过程会产生大量的数据,treefunc.c的输出更可能达到数百M。待优化
分享到:
评论

相关推荐

    GCC手册 包含GCC的各种参数讲解

    GCC(GNU Compiler Collection)是GNU项目的一部分,是一个开源的编译器套件,用于将C、C++、Objective-C、Fortran、Ada以及Go等编程语言的源代码编译成可执行程序。它不仅提供了编译器,还包括预处理器、链接器和...

    GCC参数详解中国力量.rar_gcc

    **GCC参数详解** GCC(GNU Compiler Collection)是GNU项目的一部分,是一个开源的、跨平台的编译器套件,用于将源代码编译为可执行程序。它支持C、C++、Objective-C、Fortran、Ada和Go等多种编程语言。在使用GCC时...

    GCC 使用教程

    - **-O 编译选项**:启用基本的优化,提高程序运行效率。 - **-O2 编译选项**:进一步提高-O优化等级,提供更多高级优化。 - **-fomit-frame-pointer 编译选项**:禁用帧指针,减少内存访问次数,但可能会影响调试。...

    测试gcc优化效果的代码

    为了运行和分析这些测试,你需要使用GCC编译器,将`-O0`至`-O3`或`-Ofast`作为参数传递给编译命令,并使用性能分析工具(如gprof、perf等)来收集和分析运行数据。这样,你可以观察不同优化级别下,程序的执行时间、...

    GCC使用教程

    使用GCC编译这个程序,可以执行以下命令: ```sh gcc -o hello hello.c ``` 这里,`-o`参数指定输出文件名为`hello`,`hello.c`是源文件名。运行`./hello`即可看到"Hello, World!"的输出。 ### 编译选项 GCC有...

    avr的gcc编程(初学者必看)

    - **定义**: BootLoader是在主程序运行之前执行的一小段程序。 - **作用**: 更新主程序代码,实现在线升级。 - **avr-libc对BootLoader的支持**: - **库支持**: avr-libc提供了一套完整的BootLoader支持库。 - ...

    GCC使用教程.doc

    GCC,全称GNU Compiler Collection,是一组开源的编译器,用于将源代码转换成可执行文件。GCC支持多种编程语言,包括C、C++、Fortran、Objective-C等。本教程将详细介绍如何使用GCC进行编译和调试,并提供一些高级...

    gcc-4.4.0源码

    GCC生成调试信息(如 DWARF),这使得开发者可以使用GDB等调试工具有效地跟踪和调试代码。 11. **插件系统** GCC 4.4.0引入了插件系统,允许开发人员编写自定义代码,以扩展GCC的功能,如添加新的优化或分析工具...

    AVR单片机GCC程序设计.pdf

    - **调试方法**:通过打印输出信息,跟踪程序执行情况。 - **常见函数**:`printf`、`fopen`、`fclose`等。 **5.3 最小化的格式化的打印函数** - **功能**:提供基本的打印功能,节省内存资源。 - **应用场景**:...

    gcc、gdb、gnumake中文手册3合1

    三者结合使用,可以在Linux环境下实现高效、自动化的软件开发流程:`gcc`负责将源代码编译成可执行文件,`gnumake`管理构建过程,而`gdb`则用于调试和优化代码。这些工具的熟练掌握对于任何Linux下的软件开发者来说...

    ARM_GCC内嵌汇编

    ARM_GCC内嵌汇编是将汇编语言代码嵌入到C或C++程序中的技术,主要用于优化性能关键部分,或者解决某些特定硬件交互的问题。在ARM架构中,GCC(GNU Compiler Collection)编译器提供了内嵌汇编的支持,允许开发者在...

    gcc调试器gdb速成笔记

    - GDB的单步执行功能(step和next)可以用来一步一步跟踪程序的执行流程,step会进入函数内部,而next则不会进入函数内部。 - 使用until命令可以跳出循环并继续执行,直到遇到下一个断点。 这个GDB速成笔记详细介绍...

    用GDB调试程序

    使用GDB进行调试时,开发者可以逐步跟踪程序的执行,观察变量的改变,检查程序的执行路径和条件,从而诊断和解决问题。GDB提供的这些功能对于开发者来说非常重要,它能够帮助开发者在UNIX环境下有效地进行程序调试...

    2009-GCC-Summit-Proceedings

    6. **内存分配:** 对于大型结构体或数组作为参数的情况,通过优化可以减少内存分配和释放的操作,提高程序运行效率。 #### 五、使用Eclipse进行逆向、多进程和非停止调试(Using Eclipse for Reverse, Multi-...

    linux软件开发之GCC,GDB用法篇归纳.pdf

    使用GDB,开发者可以跟踪程序的执行流程,检查程序状态,定位并解决运行时的问题。 在处理大型项目时,多个源文件的编译可以通过GCC一次性完成,它会自动管理所有编译单元的预处理、编译和链接。然而,对于大型工程...

    Linux常用开发工具.docx

    使用gcc编译器可以将源代码编译成可执行文件,并且可以使用各种参数来控制编译过程。 二、make工具 make是一个构建自动化工具,用于自动化编译和构建过程。make工具的主要功能包括: * 自动化编译和构建过程 * ...

    LINUX基本的程序调试技能及相关工具的使用,包括GDB(DDD)、Mtrace、strace

    GDB允许开发者在程序运行时查看和控制程序状态,包括设置断点、单步执行、查看变量值、分析调用堆栈等。DDD(Data Display Debugger)是GDB的一个图形界面版本,提供了更为直观的用户界面,方便开发者进行交互式调试...

Global site tag (gtag.js) - Google Analytics