簡體   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