windows通过MSys32开发Windows CMake项目的编译与调试(gdb调试、codeblocks调试)
·
项目采用CMake编译,需要先搭建CMake windows编译环境
环境搭建:
1、安装 msys64
2、打开msys64命令行窗口(开始菜单->MSYS2->MSYS2 MINGW64)
3、在命令msys64命令行窗口执行以下更新库、安装cmake
pacman -Syu //更新库
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake //安装cmake与gcc
编译(需要在msys64命令行窗口中)并生成exe文件:
1、在msys64命令行中,cd到项目build目录
2、rm -rf * //清空build目录下面内容
3、生成普通编译器:
cmake .. -G "MinGW Makefiles" -DCMAKE_C_COMPILER="C:/msys64/mingw64/bin/gcc.exe" -DCMAKE_CXX_COMPILER="C:/msys64/mingw64/bin/g++.exe"
生成Code::Blocks工程文件(可以图形化调试):
cmake -G "CodeBlocks - MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER="C:/msys64/mingw64/bin/gcc.exe" -DCMAKE_CXX_COMPILER="C:/msys64/mingw64/bin/g++.exe" ..
4、mingw32-make //生成exe文件
gdb命令行调试:
需要在CMakeLists.txt中增加:set(CMAKE_BUILD_TYPE "Debug")
1、启动:gdb --args ./wanson_license_tool.exe -p COM5 -u 0F9763C6DACF9991
2、设置断点:
在指定行号处设置断点,如:break bk_main.c:336
在指定函数处设置断点,如:break main
3、开始运行(如果有断点会停止在断点):r //run
4、 查看变量: p bkThread //print bkThread变量
查看堆栈: bt //backtrace
单步执行(进函数):s //step
单步执行(不进函数):n //next
继续执行到下一个断点:c //continue 如果不想单步执行
5、退出gdb:q //quit
gdb查看变量:
info variables:查看所有全局/静态变量
info variables g_:查看全局变量
info variables int:查看全局int变量
info args:查看当前函数参数
info locals:查看局部变量
info frame: 查看当前栈帧中的所有变量(包括参数和局部变量)
bt full:查看所有栈帧的变量(多函数调用时)
Code::Blocks图形化界面调试方法:
1、在codeBlock中导入build目录下面的MyCMakeProject.cbp文件(File->Open...->选择build目录下面的cbp文件)
如果没有cbp文件,需要先执行:cmake -G "CodeBlocks - MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER="C:/msys64/mingw64/bin/gcc.exe" ..
2、CodeBlock设置:
设置gdb路径:
Settings菜单->Debugger->GDB/CDB debgger->Default
在ExecutablePath中输入完整的gdb路径,如:C:\msys64\mingw64\bin\gdb.exe
设置Exe路径:
右击项目->选择Project->Project targets(默认为all)->Output filename:输入exe名称
右击项目->选择Project->Project targets(默认为all)->Type,输入exe程序名称
设置命令行启动参数:
Project菜单->Set Program's arguments...->Program arguments中输入启动参数,如:-c arg1 -p arg2
3、断点处跟踪变量:
查看局部变量:Debug菜单->Debuging windows->Watches(勾选上就会显示一个Watches窗口)
跟踪全局变变量:打开Watches窗口,在Watches窗口空白行增加冒号+变量,如要跟踪全局变量device,就输入 ::device
更多推荐


所有评论(0)