VScode断点使用

前因 今天遇到了一个问题,c++编程解决问题时不能正确输出,于是我想使用断点调试来找出问题所在。此前很少使用断点调试,对于调试的几个按钮仅仅认为向下的箭头是向下运行一步、向上的箭头是回退一步、方框是退出调试。 于是:出现 (1) 本应长度为3的数组b却是std::vector of length -1198221809, capacity 2069355498。 继续点击向下的箭头;结果在几个头文件中来回转跳 (2) 回退到(1)的状态,再点击step over符号,数组b的长度恢复正常: (3) 不知道其中原因,我查了下断点用法。 断点使用 操作 描述 继续 / 暂停 F5 继续:恢复程序/脚本的正常执行(直到下一个断点)。 暂停:检查当前行正在执行的代码并逐行进行调试。 单步跳过 F10 将下一行代码作为一个整体执行,而不进入该方法的内部步骤。 单步调试 F11 进入下一行代码的方法,以便逐行跟踪其执行过程。 单步跳出 Shift+F11 在方法或子程序内部时,完成当前方法的剩余行并返回到之前的执行上下文,就像将其作为一个命令执行一样。 重启 Ctrl+Shift+F5 终止当前程序执行并使用当前的运行配置再次开始调试。 停止 Shift+F5 终止当前程序执行。 单步调试: 进入下一行代码的方法,以便逐行跟踪其执行过程。意思是说要把最基础的编译文件显示出来,单步跳过封装了执行单步调试的所有过程,可以一直按 F11 达到 F10 所完成的任务。 之前以为按f11是在几个头文件中来回转跳,其实不是。 参考 使用 Visual Studio Code 调试代码

April 21, 2026 · 1 min · farmer3-c

System.IO.FileLoadException: 未能加载文件或程序集“WindowsDebugLauncher……

问题 在使用VS code编写C++程序时,运行程序时出现了以下错误: 未经处理的异常: System.IO.FileLoadException: 未能加载文件或程序集“WindowsDebugLauncher, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。强名称验证失败。 (异常来自 HRESULT:0x8013141A) ---> System.Security.SecurityException: 强名称验证失败。 (异常来自 HRESULT:0x8013141A) --- 内部异常堆栈跟踪的结尾 --- 解决方法 异常信息的重点在:强名称验证失败。 这个问题主要出现在c#开发,在c#中,程序集的强名称是由程序集的公钥和版本号组成的。如果程序集的强名称验证失败,就会出现这个错误。 所以我想先尝试临时禁用强名称验证(仅用于调试环境),以查看是否能解决问题。 因为没有安装 sn.exe 工具,所以通过安装 .NET SDK 来获取 sn.exe 工具。 安装好后,我灵机一动,是不是可以删除VS code “PORTS”面板的进程,然后再重新运行程序,看看是否能解决问题。 于是我在“PORTS”面板中 结束了所有进程 ,然后再重新打开VS code,运行程序,问题解决了。 猜测原因 首先要明确:这个错误表面是 C++ 运行报错,实际是 VS Code 的 C/C++ 调试插件依赖的.NET 程序集出了问题,不是 C++ 代码本身有逻辑错误。 WindowsDebugLauncher是 VS Code 的 C/C++ 调试插件(ms-vscode.cpptools)在 Windows 平台上依赖的调试启动程序集(基于.NET Framework 开发),它带有强名称签名(公钥令牌正是b03f5f7f11d50a3a)。强名称验证失败的核心是:系统在加载这个程序集时,验证它的签名完整性、版本一致性、公钥合法性时出了问题,导致拒绝加载,最终调试器无法启动,抛出FileLoadException。 调试进程残留 之前多次启动 C++ 程序调试,部分调试进程(hello.exe、use4set.exe)没有正常退出,而是在后台残留,对应的cppdbg调试器也没有释放。 这些残留进程会占用WindowsDebugLauncher程序集的资源,或者导致程序集被锁定在 “已加载但未释放” 的状态,后续再次启动调试时,系统无法重新验证该程序集的强名称(相当于 “资源被占用,验证流程无法正常执行”),从而抛出验证失败错误。 ...

February 3, 2026 · 1 min · farmer3-c