vs运行The thread 0x2f90 has exited with code 0 (0x0)报错解决

本文介绍了解决Visual Studio中运行Skia代码时出现的符号加载问题及程序快速退出的情况。提供了修改VS设置的方法及使用快捷键Ctrl+F5运行程序的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'HelloSkia.exe' (Win32): Loaded 'F:\skia\HelloSkia\x64\Debug\HelloSkia.exe'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\win32u.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\gdi32full.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\msvcp_win.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbase.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\imm32.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\combase.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\bcryptprimitives.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\DWrite.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\uxtheme.dll'. Symbols loaded.
'HelloSkia.exe' (Win32): Loaded 'C:\Windows\System32\kernel.appcore.dll'. Symbols loaded.
The thread 0x2f90 has exited with code 0 (0x0).
The thread 0x1900 has exited with code 0 (0x0).
The program '[8064] HelloSkia.exe' has exited with code 0 (0x0).

在vs中执行skia代码,遇到以上报错,但能输出结果,这时可以试一试在在vs中Tools->Options->Debugging->Symbols如下:

如果还是不行,请用ctrl+F5组合键试着运行一下即不加调试

(原因来自c++ - The program has exited with Code 0 (HELP) - Stack Overflow

 program executed faster than you were able to read the output. You didn't specify your IDE but I deduce Visual Studio, in which case try pressing ctrl + F5.

欢迎关注笔者微信公众号


​​​​​​​

 

<think>我们正在解决Visual Studio调试时出现"no matching symbolic information found"的问题。根据用户之前的上下文,用户可能是在调试时遇到了符号信息不匹配的问题,需要解决方法。虽然用户提供了两个引用,但引用内容与当前问题关联不大(引用1讲的是桶扩展,引用2是一段C代码测试),因此我们忽略这两个引用,专注于解决符号问题。 解决方案: 1. 确保项目生成调试符号:在Visual Studio中,检查项目配置是否生成了调试信息。通常在Debug配置下,默认会生成PDB(程序数据库)文件。 步骤: - 打开项目属性(右键项目 -> 属性) - 进入“配置属性”->“C/C++”->“常规”,确保“调试信息格式”设置为“程序数据库(/Zi)”或“用于编辑并继续的程序数据库(/ZI)” - 进入“链接器”->“调试”,确保“生成调试信息”设置为“是(/DEBUG)2. 检查PDB文件是否与可执行文件匹配:如果PDB文件和可执行文件的时间戳或版本不匹配,会导致符号无法加载。 解决方法: - 清理并重新生成整个解决方案(在VS中选择“生成”->“清理解决方案”,然后“重新生成解决方案”) - 确保调试时加载的是最新生成的PDB文件 3. 设置符号路径:在Visual Studio中,可以设置符号路径来指定PDB文件的位置,特别是当使用第三方库时。 步骤: - 打开“工具”->“选项”->“调试”->“符号” - 添加包含PDB文件的目录(例如,项目生成目录、第三方库的PDB目录) - 可以勾选“Microsoft符号服务器”以下载Windows系统库的符号(如果需要调试系统调用) 4. 检查模块加载状态:在调试时,可以通过“模块”窗口检查符号加载状态。 步骤: - 在调试时,点击“调试”->“窗口”->“模块” - 查看每个模块的符号状态,如果状态为“无法找到或打开PDB文件”,则说明符号加载失败 - 右键该模块,选择“符号加载信息”以查看详细信息,或者手动指定PDB文件路径 5. 确保没有剥离符号:在发布版本中,有时会剥离调试信息以减小文件大小。如果需要在发布版本中调试,应确保在发布配置中也生成调试信息(在项目属性中设置,如上所述)。 6. 检查源文件匹配:如果调试时提示找不到源文件,可能是因为源文件路径改变。可以在“解决方案资源管理器”中右键源文件,选择“打开方式...”,然后选择“源代码(文本)编辑器”来打开当前文件,这样调试器会重新关联。 7. 使用调试器命令:在Visual Studio的即时窗口中,可以使用调试器命令加载符号: - `.sympath` 命令可以查看和设置符号路径 - `.reload /f ModuleName` 强制重新加载指定模块的符号 8. 如果使用第三方库,确保其PDB文件可用:有些第三方库会提供单独的PDB文件下载,需要将其放在正确的路径下(通常是和DLL同一目录,或者在符号路径中指定的目录)。 9. 检查是否在调试时优化了代码:编译器优化可能会影响调试信息的准确性。在Debug配置中,通常关闭优化(项目属性->C/C++->优化->优化设置为“禁用(/Od)”),但在Release中调试时可能需要临时关闭优化。 10. 如果问题仍然存在,尝试删除解决方案目录下的`.vs`隐藏文件夹(需要关闭Visual Studio),然后重新打开解决方案。这可以解决一些缓存问题。 注意:以上步骤需要根据项目的具体情况调整。 生成相关问题: 1. 如何在Visual Studio中配置符号服务器? 2. 如何为Release版本生成调试信息? 3. 如何检查PDB文件与可执行文件的版本是否匹配? 4. 调试时如何查看已加载的符号? 5. 如何解决第三方库的符号加载问题?</think>在 Visual Studio 中遇到 "no matching symbolic information found" 错误时,通常表示调试器无法找到或加载与当前执行代码匹配的 PDB(Program Database)符号文件。以下是逐步解决方法: ### 1️⃣ 确保生成调试符号 - **项目属性设置**: 1. 右键项目 → 属性 → 配置属性 → C/C++ → 常规 2. 设置`调试信息格式`为 **程序数据库 (/Zi)** 或 **用于编辑并继续的程序数据库 (/ZI)**[^1] 3. 转到 链接器 → 调试 → 设置`生成调试信息`为 **是 (/DEBUG)** 4. 确保`生成程序数据库文件`路径正确(默认:`$(OutDir)$(TargetName).pdb`) - **验证生成**: ```bash # 清理后重新生成 msbuild /t:Clean msbuild /t:Rebuild /p:Configuration=Debug ``` ### 2️⃣ 检查符号加载状态 - **模块窗口查看**: 1. 调试时:调试 → 窗口 → 模块(或按 `Ctrl+Alt+U`) 2. 检查目标模块的`符号状态`列 3. 若显示`无法找到或打开 PDB 文件`,右键模块 → `加载符号` → 手动指定 PDB 路径 - **输出窗口验证**: 在调试输出中检查类似信息: ``` 'YourApp.exe' 已加载符号 'YourDll.dll':已跳过加载符号。未提供任何符号文件。 ``` ### 3️⃣ 配置符号路径 - **符号设置**: 1. 工具 → 选项 → 调试 → 符号 2. 添加自定义符号路径(如 PDB 存放目录) 3. 勾选 **Microsoft 符号服务器**(用于系统库符号) 4. 设置本地符号缓存目录(如 `C:\SymbolCache`) - **即时窗口命令**: 调试时在即时窗口执行: ```vs .sympath+ C:\Your\Custom\Symbol\Path // 添加路径 .reload /f // 强制重新加载符号 ``` ### 4️⃣ 解决版本不匹配 - **检查时间戳**: 1. 右键 EXE/DLL → 属性 → 详细信息 2. 比较`文件版本`和`时间戳`是否与 PDB 一致 3. 使用 `dumpbin /headers YourFile.dll` 验证 - **强制匹配**: 在项目属性 → 链接器 → 高级 → 设置`调试程序数据库`为: ``` $(TargetDir)$(TargetName).pdb ``` ### 5️⃣ 处理第三方库符号 - **NuGet 包**: 确保安装 `-symbols` 包(如 `SomePackage.symbols.nupkg`) - **手动加载**: 在模块窗口右键第三方 DLL → `加载符号` → 指定供应商提供的 PDB ### 6️⃣ 高级排查 - **PDB 验证工具**: 使用 `SymChk.exe`(Windows SDK 自带): ```cmd symchk /r YourApp.exe /s SRV*C:\SymbolCache*https://msdl.microsoft.com/download/symbols ``` - **重建符号索引**: 删除解决方案目录下的隐藏文件: ``` .vs\YourProject\v16\Browse.VC.db // VS2019+ ``` > ⚠️ **注意**:发布版本需在项目属性 → C/C++ → 优化 → 禁用优化(/Od),否则变量值可能无法查看[^1]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值