Docker啟動過程中,要運行gdb,需要在啟動時加上--privileged=true參數,具體可以看:
dockercontainer下gdb無法正常工作的解決辦法
```
docker run --privileged=true -it -v ~/dev/share:/home/binss --name="gpp" ubuntu /bin/bash
```
下面是一段簡單的代碼:

```
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設置)