Docker启动过程中,要运行gdb,需要在启动时加上--privileged=true参数,具体可以看:
dockercontainer下gdb无法正常工作的解决办法
```
docker run --privileged=true -it -v ~/dev/share:/home/binss --name="gpp" ubuntu /bin/bash
```
下面是一段简单的代码:
![](https://img.kancloud.cn/4a/2a/4a2a96aa950359a9091422805261fb43_640x320.png)
```
gcc -g3 -O0 -gdwarf-4 -ggdb test.c -o test
```
运行出core,我们通过ulimit -c unlimited在当前文件夹下产生core文件,具体可以看 Linux 下如何产生core文件(core dump设置)
发现是没有temp文件导致的,创建touch temp后继续运行。
gdb a.out\> l\> b 5\> r\> s
出现错误
\_IO\_new\_fopen (filename=0x5555555547e6 "./temp", mode=0x5555555547e4 "r") at iofopen.c:8888 iofopen.c: No such file or directory.
这是需要我们去下载glibc源文件
root@28dcf784e1be:/home/binss# ldd a.outlinux-vdso.so.1 (0x00007ffd7b3c1000)libc.so.6 => /lib/x86\_64-linux-gnu/libc.so.6 (0x00007f63d95b1000)/lib64/ld-linux-x86-64.so.2 (0x00007f63d9ba4000)
依赖的是 libc.so.6
直接查看 /lib/x86\_64-linux-gnu/libc.so.6root@28dcf784e1be:/home/binss# ll /lib/x86\_64-linux-gnu/libc.so.6lrwxrwxrwx 1 root root 12 Apr 16 20:14 /lib/x86\_64-linux-gnu/libc.so.6 -> libc-2.27.so\*执行 libc-2.27.so
接着我们下载libc的源代码,需要修改下source.list
具体的源可以查看:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/,注意打开deb-source,下载源代码。
安装完代码后,我们就可以开始调试了。
## GDB指定源文件目录
```
(gdb) directory /home/binss/glibc-2.27/libio
```
设置好源代码搜索目录,下面开始调试。
通过gdb可以直接定位到fwrite的源码,源码如下,位于./libio/iofwrite.c。
设置gdb选项
```
set print pretty on
```
## gdb调试宏定义
怎么在gdb中调试宏,可以参照https://sourceware.org/gdb/onlinedocs/gdb/Macros.html
```
gcc -g3 -O0 -gdwarf-2 test.c
```
- 前言
- 服务器开发设计
- Reactor模式
- 一种心跳,两种设计
- 聊聊 TCP 长连接和心跳那些事
- 学习TCP三次握手和四次挥手
- Linux基础
- Linux的inode的理解
- 异步IO模型介绍
- 20个最常用的GCC编译器参数
- epoll
- epoll精髓
- epoll原理详解及epoll反应堆模型
- epoll的坑
- epoll的本质
- socket的SO_REUSEADDR参数全面分析
- 服务器网络
- Protobuf
- Protobuf2 语法指南
- 一种自动反射消息类型的 Protobuf 网络传输方案
- 微服务
- RPC框架
- 什么是RPC
- 如何科学的解释RPC
- RPC 消息协议
- 实现一个极简版的RPC
- 一个基于protobuf的极简RPC
- 如何基于protobuf实现一个极简版的RPC
- 开源RPC框架
- thrift
- grpc
- brpc
- Dubbo
- 服务注册,发现,治理
- Redis
- Redis发布订阅
- Redis分布式锁
- 一致性哈希算法
- Redis常见问题
- Redis数据类型
- 缓存一致性
- LevelDB
- 高可用
- keepalived基本理解
- keepalived操做
- LVS 学习
- 性能优化
- Linux服务器程序性能优化方法
- SRS性能(CPU)、内存优化工具用法
- centos6的性能分析工具集合
- CentOS系统性能工具 sar 示例!
- Linux性能监控工具集sysstat
- gdb相关
- Linux 下如何产生core文件(core dump设置)