我在macos catalina上有一个小的hello world c++代码,而且g++/gdb是随brew一起安装的。
我试图用visualstudio代码调试这个程序,但无法运行它。
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))
-
link
,对调试器进行代码设计。我还对原始可执行文件和符号链接进行了代码签名。
-
链接
,
-
不过,我还是遇到了同样的错误,问题没有得到解决。
我还尝试了将gdb版本降级到
8.01
,
但后来我遇到了另一个错误-可执行文件没有被识别,
这是一个已知的gdb错误,已经在9.2中修复,所以我回到了新版本。
62563627
,我作为:
$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。
$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代码一起工作?