编程调试和内存检测

内存检测和编程调试工具基础

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 # 线程
posted @ 2024-07-19 09:09  LemHou  阅读(34)  评论(0)    收藏  举报