使用vscode调试多线程C程序时,跳过切换线程

时间:2017-07-20 10:54:18

标签: c multithreading debugging visual-studio-code vscode-settings

使用VSCode的调试器步进多线程C程序会在每一步都切换线程。

调试器跳转的线程运行如下代码:

do {
    rc = nanosleep(&rqtp, &rem);
    rqtp = rem;
} while (rc < 0 && errno == EINTR);

我的调试器配置如下:     &#34;版本&#34;:&#34; 0.2.0&#34;,     &#34;配置&#34;:[

    {
        "name": "solid Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceRoot}/program",
        "args": ["-a","-b"],
        "stopAtEntry": true,
        "cwd": "${workspaceRoot}",
        "environment": [],
        "externalConsole": true,
        "linux": {
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    }

Q1:如何让调试器坚持使用遇到断点的线程?

Q2:如何将焦点集中在属于该线程的callstack上?

1 个答案:

答案 0 :(得分:0)

Q1 的答案:根据this SO thread,在 gdb 中添加 set scheduler-locking on 可以让你在单步时停留在同一个线程中。

不确定第 2 季度的情况,但这应该为您提供继续所需的信息。我认为显示了当前线程的调用堆栈,但我不确定。