在 Visual Studio Code 中用 C++ 调试时如何读取输入?

Jos*_*Jos 5 c++ visual-studio-code

我正在使用VSCodeMacOSX 中调试我的CPP程序。

我有2个程序。

程序1

int main(){

    string a;
    a = "a";
    a += 'b';
    cout<<a<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

程序2

int main(){

    string a;
    cin>>a;
    a += 'b'
    cout<<a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

program1 中,我直接分配string a和 当我调试程序时VSCode,首先使用以下命令在终端中编译它:

g++ -g filename.cpp

然后在调试菜单中选择开始调试选项。我可以通过在断点中向前移动来查看变量的状态。string a

变量部分显示不同的变量的状态和CALL堆栈显示堆栈帧。

但是,对于program2,当我越过 的断点时cin>>a;VARIABLESCALL 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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如何获取用户输入并继续调试我的代码?

Jos*_*Jos 17

正如指出这里

如果在launch.json 中启用"externalConsole":true那么您将看到一个弹出控制台窗口,您可以输入该窗口。

  • 事实证明,如果将“&lt;”和“input.txt”作为单独的参数放置,它就可以工作。 (3认同)
  • 这是过时的信息。我刚刚安装了 Mac CodeLLDB,现在稍微容易了一些,但仍然有几个步骤。观看对我有用的视频演练:https://www.youtube.com/watch?v=wKjFVyDbSpA (2认同)

小智 9

要使用输入进行调试,您可以编辑 arg 部分,如下所示:

"program": "${workspaceFolder}/main",
"args": ["<", "input_file.in"]
Run Code Online (Sandbox Code Playgroud)

上面的例子应该是一样的: ./main < input_file.in


Mik*_*ike 6

  1. 安装扩展CodeLLDB

  2. 添加新配置CodeLLDB: Launch

    添加新配置

  3. program将属性设置为"program": "${workspaceFolder}/${fileBasenameNoExtension}"

  4. (可选)重建代码

  5. 在 VS 调试选项卡中选择创建的Launch配置。并开始吧!

    在 VS 调试选项卡中选择创建的启动配置

利润! 演示 视频手册