【发布时间】: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