美文网首页Other
[other] OSX使用gdb调试C程序

[other] OSX使用gdb调试C程序

作者: 何幻 | 来源:发表于2019-06-24 21:12 被阅读1次

GDB指的是 The GNU Project Debugger,是 GNU 开源组织开发的一个程序调试工具。
在 Mac OSX 中使用 GDB,遇到了一些困难,文本来记录一下。

1. 安装 gdb

$ brew install gdb

2. 编写C程序

hello.c

#include <stdio.h>
int main() 
{
  printf("Hello\n");
}

3. 使用gcc编译

$ gcc -g hello.c -o hello

注:要使用gdb调试,需要传入-g参数。

4. 运行一下

$ ./hello
Hello

5. 使用gdb调试

$ gdb ./hello

GNU gdb (GDB) 8.3
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin16.7.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from hello...
Reading symbols from /Users/.../hello.dSYM/Contents/Resources/DWARF/hello...

(gdb) 

光标停留在 (gdb) 后面了,等待输入调试命令。

6. 在OSX不能调试

(gdb) run
Starting program: /.../hello
Unable to find Mach task port for process-id 23330: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

7. 解决方法

7.1 应用程序中搜索:钥匙串

7.2 创建证书

菜单 - 钥匙串访问 - 证书助理 - 创建证书

名称:gdb-cert
身份类型:自签名根证书
证书类型:代码签名

勾选:让我覆盖这些默认值

然后一直点“继续”,点到最后一步。
选择,钥匙串:系统

7.3 配置证书

再回到钥匙串访问页面,右上角搜索:gdb-cert

找到种类为证书的钥匙串,右键显示简介

选择,使用此证书:始终信任

7.4 命令行授权

$ codesign -s gdb-cert /usr/local/bin/gdb

其中,gdb-cert为刚才创建的钥匙串名字,/usr/local/bin/gdbgdb的安装路径。

7.5 重启电脑

重启

8. 重新使用gdb调试

$ gdb ./hello
...
(gdb) run
Starting program: /Users/.../hello
[New Thread 0x1103 of process 4375]
[New Thread 0x1403 of process 4375]
[New Thread 0x1503 of process 4375]
Hello
[Inferior 1 (process 4375) exited normally]

参考

GDB
The GNU Project Debugger(GDB): Short Tutorial with Examples

相关文章

  • [other] OSX使用gdb调试C程序

    GDB指的是 The GNU Project Debugger,是 GNU 开源组织开发的一个程序调试工具。在 M...

  • Mac使用vscode调试c/c++

    mac上在vsCode上进行c/c++程序的调试 目的在mac上使用vscode 和 lldg/gdb调试工具 对...

  • linux编程入门(七)-使用gdb调试程序

    程序开发离不开调试,可以断点调试,也可以打log调试,linux下断点调试c,c++程序用gdb。 断点调试虽然很...

  • Linux下C++开发常用工具

    gdb 使用gdb的时候, 需要在编译时使用-g命令, 在编译时加入必要的C库gdb + filename进入调试...

  • iOS安全防护方案

    1.阻止动态调试 GDB、LLDB是Xcode内置的动态调试工具。使用GDB、LLDB可以动态的调试你的应用程序(...

  • 使用GDB调试C++程序

    GDB调试利器 GDB, the GNU Project debugger, allows you to see ...

  • 一、调试-使用gdb调试linuxC程序

    gdb是linux操作系统特有的调试工具,可以完成一般IDE提供的所有调试功能。使用gdb调试程序之前,必须使用g...

  • Vscode配置GDB调试Nginx环境

    配合remote-ssh,可以很好地使用gdb直接调试远程服务器上的程序 比如我们此次使用GDB来直接调试ngin...

  • gdb调试C/C++程序的方法

    一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文...

  • vim-lldb 瞎折腾

    前几天突然心血来潮,想要在使用 vim 来写 C 语言程序,并在终端进行调试,Google 了下,可以使用 GDB...

网友评论

    本文标题:[other] OSX使用gdb调试C程序

    本文链接:https://www.haomeiwen.com/subject/qbdaqctx.html