【问题标题】:Debugging c++ application in VSCode exits when "*" is printed打印“*”时退出在 VSCode 中调试 c++ 应用程序
【发布时间】:2020-11-19 11:25:57
【问题描述】:

我正在使用以下应用程序

#include <iostream>

using namespace std;

void print(char* s)
{
    cout << s << endl;
}

int main(int argc, char* argv[])
{
    print("a"); 
    print("b");
    print("***");
    print("c");
    print("d");
}

当我在 VSCode 下使用调试器运行它时(使用“Native Debug”扩展),它永远不会通过第二次打印,这是我的输出:

a
b

它永远不会通过print("***),即使我在该行之后放置一个断点,它也不会到达它。

如果我注释掉 print("***"),应用程序会以正确的输出结束:

a
b
c
d

我唯一设法弄清楚的是存在并发出打印“*”字符,如果我用任何其他字符替换它,一切正常。为什么我会看到此行为,如何在不更改代码的情况下解决此问题?

【问题讨论】:

  • 验证您在该字符串中确实有 ASCII * 字符。在十六进制编辑器中打开源文件是一种检查方法。应该没有任何原因导致发布的程序无法运行。
  • 该程序运行良好,只要我不尝试在 VSCode 下调试它。如果我按原样运行它或使用 gdb 调试它,它可以正常工作。无论如何,我已经用十六进制编辑器打开它,我看到"***", 2A 2A 2A 的正确 ASCII 值
  • 唯一合理的解释是你在VSCode调试器中发现了一个bug。

标签: c++ visual-studio-code visual-studio-debugging


【解决方案1】:

@molbdnilo,似乎是正确的。它看起来像“本机调试”扩展中的错误。使用其他扩展时问题未重现(我尝试使用 Microsoft 的“C/C++”扩展)

【讨论】:

  • Native Debug 扩展中为此创建一个问题
猜你喜欢
  • 2022-10-06
  • 2021-03-16
  • 1970-01-01
  • 2020-10-23
  • 2020-08-24
  • 2011-04-10
  • 2020-05-28
  • 2016-07-06
  • 1970-01-01
相关资源
最近更新 更多