文档章节

mac安装gdb调试工具的方法

who7708
 who7708
发布于 2018/12/09 22:34
字数 450
阅读 203
收藏 0
GDB

查看是否已安装

$ gdb -v
GNU gdb (GDB) 8.2

表明已经安装,如果未安装则进行后续步骤

使用brew安装

搜索gdb

$ brew search gdb
==> Formulae
cgdb            gdb ✔           gdbm ✔          i386-elf-gdb    pgdbf
==> Casks
macgdbp

符合条件的gdb结果显示出来了

安装

$ brew install gdb
==> Downloading https://homebrew.bintray.com/bottles/gdb-8.2_1.high_sierra.bottl
######################################################################## 100.0%
==> Pouring gdb-8.2_1.high_sierra.bottle.tar.gz
==> Caveats
gdb requires special privileges to access Mach ports.
You will need to codesign the binary. For instructions, see:

  https://sourceware.org/gdb/wiki/BuildingOnDarwin

On 10.12 (Sierra) or later with SIP, you need to run this:

  echo "set startup-with-shell off" >> ~/.gdbinit
==> Summary
🍺  /usr/local/Cellar/gdb/8.2_1: 55 files, 10.3MB

不报错,则安装完成

使用gdb

编写简单c源码

$ vim hello.c
写入以下内容:
#include <stdio.h>
int main(){
    int a = 5;
    printf("hello world %d\n", a);
    return 0;
}

然后执行以下后续步骤:
$ gcc -g hello.c -o hello.o
$ gdb ./hello.o
(gdb) start  // 开始调试
(gdb) p a   // 输出a变量值
(gdb) q     退出调试

解决gdb启动调试时出现的问题

启动调试时,可能会出现如下:

(gdb) start
Temporary breakpoint 1 at 0x100000ef4
Starting program: /xxxx/hello.o
Unable to find Mach task port for process-id xxx: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

此时还不能正常使用gdb,主要还是mac的安全问题。

配置gdb相关证书(自己手动生成)

打开钥匙串访问

打开钥匙串访问

创建证书

创建证书

输入证书信息

一直点击继续,直到完成。

更改证书位置

默认创建的是登录证书,而我们需要的是系统证书。则在侧边栏选择登录,将gdb-cert选择,直接拖到系统菜单即可。

代码签名

执行已下命令:

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

© 著作权归作者所有

who7708
粉丝 1
博文 36
码字总数 19045
作品 0
徐汇
私信 提问
使用eclipse与jLink V8调试exynos 4412 u-boot

/ @author Maoxiao Hu @version V1.0.1 * @date Dec-2014 * < COPYRIGHT 2014 ISE of SHANDONG UNIVERSITY > */ 首先说一下我实验室的网络环境:一台搭载ubuntu系统的公用Linux服务器,数台客......

Jr小王子
2015/12/16
140
0
MAC上使用gdb(Mac10.12未解决)

原址 由于要在mac上制作自己的malloc动态存储分配器,要使用gdb进行调试,之前一直在centos上用gdb调试,转到mac上竟然发现有这么多坑,还好一一解决了,其原因大多数因为mac上非常关注程序安...

u010164190
2018/05/14
0
0
直接使用JDB解决ndk-gdb调试时的“waiting for debugger”弹窗不消失问题

一 概述 如题的情况,我是在苹果(Mac)的笔记本电脑上调试时遇到的。我查了一下,已经有网友遇到过类似的情况,其解决方法多数是,杀进程\重启\启动两个eclipse调试.杀进程\重启的方法我...

胖老狼
2015/10/04
1K
0
Mac上使用 gdb 调试程序

gdb 最新版本的 Mac 默认只能使用 lldb 进行程序调试,但对于习惯使用 gdb的人来说还是希望在Mac下使用gdb调试程序才感得更爽。 有没有办法可以在最新的Mac版本上使用gdb呢?当然可以,不过稍...

音视频直播技术专家
2018/01/10
0
0
Go语言开发环境IntelliJ IDEA,可惜没有remote debug

开发系统: Mac OS X 10.11.5 EI Capitan开发工具: 代码编写: IntelliJ IDEA (实际用了WebStorm。搞不好Android Studio都行)。 编译测试运行调试: Docker Toolbox (Docker的真正的编译和...

Q_J
2016/07/26
699
0

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
32分钟前
5
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
38分钟前
5
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
45分钟前
6
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
48分钟前
4
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
48分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部