繁体   English   中英

使用 vscode 在调试多线程 C 程序时单步切换线程

[英]Step-over switches thread while debugging multi-threaded C program with vscode

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

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

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

我的调试器配置如下:“版本”:“0.2.0”,“配置”:[

    {
        "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:如何将焦点放在属于该线程的调用堆栈上?

对 Q1 的回答:根据这个 SO thread ,将set scheduler-locking on添加到 gdb 将使您在单步执行时保持在同一线程中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM