CLion中如何无需编译即可调试CMake项目的外部库?
CLion调试MFC外部库函数的配置问题
将Visual Studio项目通过CMake移植到CLion后,调试功能存在以下问题:
- 无法单步进入外部库(如MFC)中的函数,调试器会直接跳过
- 在外部库调用的代码(如回调)处设置断点,仅显示内存地址和反汇编,无法查看调用栈对应的源码
示例代码
#include <afxwin.h> int main() { CDialog dialog; dialog.Create("test"); // Breakpoint! return 0; }
在Visual Studio中,借助MFC框架的完整源码及Windows SDK调试符号,可直接单步进入CDialog::Create函数,但CLion使用Visual Studio工具链调试同一CMake项目时无此功能。
当前CMake配置
cmake_minimum_required(VERSION 3.27) project(untitled) set(CMAKE_CXX_STANDARD 23) set(CMAKE_BUILD_TYPE Debug) add_executable(untitled main.cpp)
已尝试操作及当前痛点
编辑1:添加符号服务器
在「Settings > Build, Execution, Deployment > Debugger」的“Symbol Servers”列表中添加了以下地址,核心C库的调试信息已能正常获取,但MFC仍无调试支持:
https://msdl.microsoft.com/download/symbols file:///C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.39.33519/atlmfc/lib/x86 file:///C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.39.33519/atlmfc/lib/x64
编辑2:强制单步进入的繁琐流程
启用符号服务器后,可通过「强制单步进入」访问MFC函数,但操作流程极为繁琐:
- 第一次单步会进入
jmpl *0xfd01b4汇编指令 - 再次单步才会定位到函数第一条指令,此时仍显示反汇编视图
- CLion提示找不到源文件
dlgcore.cpp,需手动选择文件才能进入源码调试,每次操作都要重复上述步骤,体验不佳
需求:配置CLion调试器以直接使用外部库的可用源码,且无需将这些库作为构建目标加入CMake项目避免复杂化。
内容的提问来源于stack exchange,提问作者Lázár Zsolt
相关产品推荐
相关产品推荐

