1. 无可用源问题
- 进入项目的属性页 -> C/C++ -> 常规 -> 调试信息格式 -> 用于”编辑并继续“ 的程序数据库
- 玄学, 把源码移除后,重新加载~ 是移除不是删除~~
2-1. release模式下生成pdb文件(vs2019)
- 进入项目的属性页 -> 连接器 -> 调试 -> 生成调试信息 -> 生成调试信息(Debug)
2-2. release模式下生成pdb文件(CMakeLists)
#告诉编译器生成调试信息
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
#告诉链接器生成exe时加入调试信息
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
#告诉链接器生成dll时加入调试信息
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
3. 调试dump
- 把 pdb文件、exe、dump文件放一起
第1次选 “Micosoft符号服务器”,下载非常慢, 之后选自己的缓存~~~
注意:1. 如果是从服务器上拷贝过来的dump文件,本机路径要和服务器路径一样,不然可能无法定位代码
注意:2. 有时不会直接跳转到自己的源码,可以通过堆栈信息定位上去,找到自己的源码位置