Visual Studio Code,调试子进程不起作用

2024-05-06

我有这个确切的问题:https://github.com/Microsoft/vscode-cpptools/issues/511 https://github.com/Microsoft/vscode-cpptools/issues/511

但那里的解决方案不起作用。

我尝试过相同的简单示例代码,

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    pid_t pid = fork();
    if (pid != 0) {
        printf("Main process\n");
    } else {
        printf("Forked process\n");
    }

    return 0;
}

我使用 -g 进行编译,我的 launch.json 文件如下所示。

我单击“调试”,将断点设置到第一行。在第一站,我进入-exec set follow-fork-mode child在调试控制台下,它给了我返回=cmd-param-changed,param="follow-fork-mode",value="child"。那么它就行不通了。它转到父进程(pid 显示不为 0)。我尝试使用以下命令将其设置在 launch.json 文件本身中{"text": "-gdb-set follow-fork-mode child"},但这也行不通。

{
        "version": "0.2.0",
        "configurations": [

        { 
            "name": "(gdb) Attach",
            "type": "cppdbg",
            "request": "attach",
            "program": "${workspaceRoot}/a.exe",
            "processId": "${command:pickProcess}",
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\cygwin64\\bin\\gdb.exe"
        },
            {
                "name": "(gdb) Launch",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceRoot}/a.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "environment": [],
                "externalConsole": true,
                "MIMode": "gdb",
                "miDebuggerPath": "C:\\cygwin64\\bin\\gdb.exe",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            }
        ]
    }

我遇到了同样的问题,我解决了这个问题:


 "setupCommands": [
                    {
                        "description": "Enable funcy printing to gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {   "description":"In this mode GDB will be attached to both processes after a call to fork() or vfork().",
                        "text": "-gdb-set detach-on-fork off",
                        "ignoreFailures": true
                    },
                    {   "description": "The new process is debugged after a fork. The parent process runs unimpeded.",
                        "text": "-gdb-set follow-fork-mode child",
                        "ignoreFailures": true
                    }
                ],

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio Code,调试子进程不起作用 的相关文章

  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • rust-analyzer 未能发现 vscode 中的工作区

    我开始学习 Rust 语言 但有一个问题rust analyzervscode 扩展名 它不提供代码完成 如链接所示 https rust analyzer github io manual html magic completions h
  • 解释这段代码的工作原理;子进程如何返回值以及在哪里返回值?

    我不明白子进程如何返回该值以及返回给谁 输出为 6 7 问题来源 http www cs utexas edu mwalfish classes s11 cs372h hw sol1 html http www cs utexas edu
  • vscode 中 TAB 和 ENTER 的问题

    我已经使用 Visual Studio 代码几个月了 我喜欢它 但是 有一件事让我抓狂 我厌倦了处理 VSCode 有一个可怕的习惯 当我在输入结束时按 TAB 或 ENTER 时 它会更改我的文本 例如 假设我正在写一些东西 并且想要在几
  • 如何在递归调用函数时阻止 bash 创建子 shell

    这是一个计算阶乘的简单 shell 函数 bin bash function factorial if 1 lt 2 then echo 1 else echo 1 factorial 1 1 fi factorial 1 但我发现这个脚本
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 如何在没有管理员权限的情况下在 VS Code(Windows) 中使用自定义字体来安装字体?

    我在我的工作电脑 Windows 7 上没有管理员权限 所以我无法将自定义字体 Fira Code 安装到我的系统中 有没有办法在 VS Code 中不安装就可以使用这种字体 为这个问题找到一个丑陋的解决方法 使用 webfont 打开菜单
  • 使用 VSCode Code Runner 编译 C++ 头文件

    我正在使用 VSCode 和代码运行程序扩展来尝试运行带有包含文件的简单 C 项目 该项目由 main cpp 组成 include
  • 如何使用 .NET 以编程方式沙箱进程

    我计划设计一个系统 本质上允许用户在我的机器上运行 PHP Ruby 等脚本代码 我想将它们放入沙箱中 以防止它们访问机器的关键方面 哪些 NET API 可用于此目的 我计划从主流程创建一个子流程 并希望以编程方式从主流程中沙箱该子流程
  • 分叉/多线程进程|重击

    我想让我的代码的一部分更加高效 我正在考虑让它分叉成多个进程 并让它们一次执行 50 100 次 而不是只执行一次 例如 伪 for line in file do foo foo2 foo3 done 我希望这个 for 循环运行多次 我
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • Jupyter Notebook 找不到 IQSharp

    我一直在尝试为 Quantum Katas 运行 Q 但在找到 Q 内核方面遇到了一些困难 唯一显示的内核是用于 Jupyter Notebook 的 Python 3 内核 奇怪的是 当我执行 jupyter kernalspec lis
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 使用 math.h 函数时 gdb 给出奇怪的输出[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 gdb 将 sqrt 3 计算为 0 https stackoverflow com questions 5122570 why does gdb evaluate sqrt3 to 0 这里
  • 如何启动低优先级进程? C#

    我想执行命令行工具来处理数据 它不需要阻塞 我希望它的优先级较低 所以我写了下面的内容 Process app new Process app StartInfo FileName bin convert exe app StartInfo
  • 即使 WebPack 构建工作正常,VS Code 显示未找到模块

    我的 VS Code 说它找不到导入 即使我的 WebPack 构建仍然有效 这是进口 import as tf from tensorflow tfjs 以及来自 VS Code 的消息 找不到模块 tensorflow tfjs 您的意
  • 子进程中的变量修改

    我正在研究科比和奥哈拉伦的作品Computer Systems A Programmer s Perspective 练习 8 16 要求程序的输出如下 我更改了它 因为他们使用了一个你可以在他们的网站上下载的头文件 include
  • 启动 Firefox 并等待其关闭

    Question 我想启动 Firefox 网络浏览器作为访问特定网站的过程 然后等到它关闭 一种特殊情况是浏览器可能已经打开并正在运行 因为用户可能已经访问过某个网站 在这种情况下 浏览器可能会在现有窗口中打开一个新选项卡 并且新启动的进
  • 文件操作耗时较长,收到“正在运行[文件、保存、删除创建参与者”消息

    使用 JavaScript React 和 Node 时 会发生在 VSCode 版本 1 52 1 中 我已经在 VSCode 中从事 React 项目几个月了 在那两个月的某个时刻 我开始注意到 VSCode 处理文件操作的速度显着下降

随机推荐