【发布时间】:2019-08-14 12:35:52
【问题描述】:
我正在使用 VSCode 在 MacOSX 中调试我的 CPP 程序。
我有 2 个程序。
程序1
int main(){
string a;
a = "a";
a += 'b';
cout<<a<<endl;
return 0;
}
程序2
int main(){
string a;
cin>>a;
a += 'b'
cout<<a;
return 0;
}
在program1中,我直接分配string a,当我在VSCode中调试程序时,首先在终端中使用:
g++ -g filename.cpp
然后选择调试菜单中的开始调试选项。通过在断点中前进,我可以看到 string a 变量的状态。
VARIABLES 部分显示不同变量的状态,CALL STACK 显示堆栈帧。
但是,对于 program2,当我越过 cin>>a; 的断点时,VARIABLES 和 CALL STACK 的内容得到清理了。
这是launch.json文件的内容:
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
}
]
}
如何获取用户输入并继续调试我的代码?
【问题讨论】:
-
不确定 VSCode 是否相同,但在 VS 中,当您在调试器中跳过输入时,您可以切换到控制台窗口并输入输入,按 Enter,然后返回单步执行代码。
-
@Jos 为该语句添加一个断点 a += 'b'
-
@VladfromMoscow 是的,我这样做了,调试在那里暂停。我在哪里可以提供我的意见?
-
@Jos 使用控制台窗口。
-
@VladfromMoscow 这和
Terminal或Debug Console一样吗?我的意思是,那个礼物在哪里?