编程调试和内存检测
内存检测和编程调试工具基础
GDB(GNU debugger)
GDB可以用于linux系统下的任务调试,主要的命令有:
GDB附加程序
gdb ./demo # 进入gdb调试窗口
gdb attach pid # 附加进程
加断点break
break 76 # 给第76行加断点
运行run
run # 从程序开头开始运行
继续运行continue
continue # 继续运行直到遇到下一个断点停止
Valgrind内存泄漏检测工具
安装
sudo apt-get install valgrind
Valgrind 包括多个工具,最常用的是 Memcheck,用于检测内存问题。以下是一些常用的 Valgrind 工具和选项:
- Memcheck:用于检测内存问题,如内存泄漏、越界访问等。
- Callgrind:用于分析程序中的函数调用。
- Cachegrind:用于分析 CPU 缓存的使用情况。
- Helgrind:用于检测多线程程序中的竞争条件。
- Massif:用于分析堆栈使用情况。
检查命令
valgrind ./program
valgrind -v --leak-check=full --track-origins=yes ./program
py-spy检查python堆栈工具
安装工具
# 首先确保有pip3
apt-get update
apt-get install python3-pip
# 设置阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 查看配置
pip config list
查看进程的python堆栈
py-spy dump -p [pid] # 查看进程号对应的堆栈
top显示python函数的CPU资源消耗图
py-spy top -p [pid]
record记录栈追踪信息到文件
py-spy record -o name.json -p [pid] --subprocesses --threads --duration 30 --rate 50
--rate # 指定采样频率
--duration # 持续时间
--subprocessed # 显示子进程
--threads # 线程

浙公网安备 33010602011771号