松垮垮 松垮垮
首页
  • GPU并行编程
  • 图形学
  • 归并算法
  • 计算机视觉
  • css
  • html
  • JavaScript
  • vue
  • 压缩命令
  • cmdline
  • Docker
  • ftrace跟踪技术
  • gcov代码覆盖率测试
  • GDB
  • git
  • kgdb
  • linux操作
  • markdown
  • systemtap
  • valgrind
  • 设计模式
  • 分布式
  • 操作系统
  • 数据库
  • 服务器
  • 网络
  • C++
  • c语言
  • go
  • JSON
  • Makefile
  • matlab
  • OpenGL
  • python
  • shell
  • 正则表达式
  • 汇编
  • GPU并行编程
  • mysql
  • nginx
  • redis
  • 网络
  • 计算机视觉
  • 进程管理
  • linux调试
  • 【Python】:re.error bad escape i at position 4
  • 搭建ai知识助手
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

松垮垮

c++后端开发工程师
首页
  • GPU并行编程
  • 图形学
  • 归并算法
  • 计算机视觉
  • css
  • html
  • JavaScript
  • vue
  • 压缩命令
  • cmdline
  • Docker
  • ftrace跟踪技术
  • gcov代码覆盖率测试
  • GDB
  • git
  • kgdb
  • linux操作
  • markdown
  • systemtap
  • valgrind
  • 设计模式
  • 分布式
  • 操作系统
  • 数据库
  • 服务器
  • 网络
  • C++
  • c语言
  • go
  • JSON
  • Makefile
  • matlab
  • OpenGL
  • python
  • shell
  • 正则表达式
  • 汇编
  • GPU并行编程
  • mysql
  • nginx
  • redis
  • 网络
  • 计算机视觉
  • 进程管理
  • linux调试
  • 【Python】:re.error bad escape i at position 4
  • 搭建ai知识助手
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 分布式

  • 操作系统

    • cpu结构
    • cpu页表
    • Linux内核同步机制原理与实现
    • per
    • protocol buffer
    • 内存分配器
    • 内核编译
    • 内核驱动模型、内核模块LKM:
    • 基础

      • 内存管理
      • 文件系统
      • 硬件结构
      • 网络系统
      • 设备管理
      • 调试技术
        • ldd 查看程序依赖库
        • strace 查看进程执行的系统调用
        • ltrace 查看进程执行的库函数
        • pstack 查看指定进程的调用栈
        • pstree 显示进程和子进程
        • addr2line 显示指定地址的函数信息
    • 段表
    • 系统调用
    • 进程
  • 数据库

  • 服务器开发

  • 网络编程

  • 系统
  • 操作系统
  • 基础
songkuakua
2025-02-15
目录

调试技术

小林 coding (opens new window)

# 调试编译

# ldd 查看程序依赖库

ldd 可执行文件:显示文件依赖库,和对应库的位置

# 运行调试

# strace 查看进程执行的系统调用

strace -p process_pid实时打印进程的系统调用栈

strace -o filename将输出内容写入文件内

通常的完整用法:

strace -rttTp process_pid -e trace=all

  • r 打印出每个系统调用的相对时间
  • tt 以us为单位显示
  • T 显示每个调用的自己的耗时
  • e 指定跟踪的系统调用类型

-e参数的具体使用:

-e trace=[set] 跟踪指定的系统调用,如open、close、socket

-e trace=file 只跟踪有关文件操作的系统调用.

-e trace=process 只跟踪有关进程控制的系统调用.

-e trace=network 跟踪与网络有关的所有系统调用.

-e strace=[signal] 跟踪所有与系统信号有关的系统调用

-e signal=set 指定跟踪的系统信号.默认为all.如signal=ISIGIO(或者signal=lio)表示不跟踪SIGIO信号.

其他参数:

  • -f 跟踪目标进程和子进程
  • -c 统计每个进程调用的时间、调用次数、错误次数,(非实时,手动结束后才打印出来)

# ltrace 查看进程执行的库函数

同strace

# pstack 查看指定进程的调用栈

gdb自带,是封装了gdb的一个脚本工具

pstack [process_pid] # 打印指定进程当前的调用栈

# pstree 显示进程和子进程

pstree -p process_pid

# addr2line 显示指定地址的函数信息

如果程序出现了段错误,显示指定地址出错,可以使用这个命令查看这个地址的信息

file 可执行文件 # 查看可执行文件的信息,判断是否有调试信息

addr2line -e 可执行文件 -f 地址 -p(-p更可读的方式输出)

上次更新: 2025/02/21, 14:57:10
设备管理
段表

← 设备管理 段表→

最近更新
01
搭建ai知识助手
02-23
02
边缘检测
02-15
03
css
02-15
更多文章>
Theme by Vdoing | Copyright © 2025-2025 松垮垮 | MIT License | 蜀ICP备2025120453号 | 川公网安备51011202000997号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 纯净模式