- C++工程的debug方法
- C++程序性能分析方法
C++工程Debug方法
常规方法
通过Debug编译,将CMAKE_BUILD_TYPE
设置为Debug
,关闭编译优化。然而这样做最大的问题是程序运行会很慢,调试不方便。
改进方法
将
CMAKE_BUILD_TYPE
设置为RelWithDebInfo
将待调试的代码块关闭编译优化:
1 2 3 4 5 6
#pragma GCC push_options #pragma GCC optimize("O0") { // debug code block } #pragma GCC pop_options
VSCode中进行debug配置, launch.json example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "[C++编译出的可执行exe文件路径]", "args": ["程序参数"], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Set Disassembly Flavor to Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] }
设置断点、编译、调试。可使用debug console查看局部变量。
C++程序性能分析
gperftools(originally Google Performance Tools)包含了cpu性能分析工具,原理和gprof差不多,会在编译的时候插入为函数计时的代码。
另外gperftools中包含了heap profiling工具,可以对程序的内存占用情况进行分析。使用方法:
安装gperftools:
1
sudo apt-get install -y libtool gperf libgoogle-perftools-dev
CmakeLists中添加编译选项
- 添加-lprofiler用于CPU性能分析
- 添加-ltcmalloc用于内存分析
运行程序,会在运行目录下(roslaunch的运行目录是~/.ros)生成cputest.prof以及memtest.x.heap
使用pprof命令可视化并分析数据
1
pprof [C++可执行文件路径] ./cpu_test.prof --svg > cpu_map_diff.svg