gdb不能在macos catalina上与visual studio一起运行 我在Mac OS Calalina上有一个小的hello World C++代码,G++/GDB是用BREW安装的。 我正在尝试用visual studio代码调试此程序,但无法运行它

gdb不能在macos catalina上与visual studio一起运行 我在Mac OS Calalina上有一个小的hello World C++代码,G++/GDB是用BREW安装的。 我正在尝试用visual studio代码调试此程序,但无法运行它,c++,macos,gdb,macos-catalina,C++,Macos,Gdb,Macos Catalina,当我在vs代码中“运行>开始调试”时,我得到错误: ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". Unable to find Mach task port for process-id 2400: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8)) 然后

当我在vs代码中“运行>开始调试”时,我得到错误:

ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run".
Unable to find Mach task port for process-id 2400: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))
然后,为了解决此问题,我执行了以下步骤:

最初,我尝试从命令行运行gdb,以检查它是否正常工作:

$g++ -g hello.cpp
$./a.out # this prints hello message as expected
$gdb -v --> this is 9.2
$ls -ls a.out
    96 -rwxr-xr-x  1 ... a.out --> so executable permissions are correct
$gdb ./a.out
    Reading symbols from ./a.out...
    Reading symbols from .../a.out...
  > run
    Starting program: .../a.out 
    Unable to find Mach task port for process-id 2003: (os/kern) failure (0x5).
        (please check gdb is codesigned - see taskgated(8))
我搜索了一个解决方案,并执行了以下操作:

  • 按照的说明,对调试器进行代码设计。我还对原始可执行文件和符号链接进行了代码签名
  • 同时也遵循了修改后的说明
  • 重新启动mac
  • 尽管如此,我还是犯了同样的错误,问题没有得到解决

    我还尝试了将gdb版本降级为, 但后来我发现了另一个错误-可执行文件没有被识别, 这是一个已知的gdb错误,在9.2中得到了修复,所以我回到了新版本

    然后按照解决方案,我以以下身份运行:

    $sudo gdb ./a.out --> this command worked
        Reading symbols from ./a.out...
        Reading symbols from .../a.out...
      > run
        Starting program: .../a.out 
        [New Thread 0xe03 of process 2528]
        [New Thread 0x1703 of process 2528]
        warning: unhandled dyld version (16)
        Hello C++ World from VS Code and the C++ extension! 
        [Inferior 1 (process 2528) exited normally]
    
    因此,现在gdb可以从命令行工作,但只使用sudo

    然而,我不能使用sudo,因为我的目标是从vs代码内部运行gdb。 所以我检查了gdb的权限,他们有管理员权限:

    $ls -ls /usr/local/bin/gdb
    0 lrwxr-xr-x  1 rog  admin  27 Aug 29 16:05 /usr/local/bin/gdb -> ../Cellar/gdb/9.2_1/bin/gdb
    $ls -ls /usr/local/Cellar/gdb/9.2_1/bin/gdb
    50368 -rwxr-xr-x   1 rog  admin  25786928 Aug 29 16:09 gdb
    
    那么,在不使用sudo的情况下让gdb工作的解决方案是什么呢?sudo有望使gdb在vs代码中工作?或者,是否有其他方法使其与vs代码一起工作