分类
善良比聪明更重要
GDB 调试多线程与多进程进阶 GDB 调试多线程与多进程进阶
本文档主要参看«Debugging with GDB» Tenth Edition, for gdb version 8.0.1,本节我们主要讲述一下使用GDB来调试多线程及多进程程序。 1. 调试多线程1.1 概念介绍在有一些操作系统上,
2021-07-06
GDB 实战:定位多线程死锁 GDB 实战:定位多线程死锁
本文用一个「双线程、双互斥锁、加锁顺序相反」的最小示例,演示如何用 gdb attach 定位程序死锁。死锁是并发编程里最棘手的问题之一,通过这个例子可以掌握一套通用的分析思路:先看线程与栈回溯(backtrace),再顺着栈找到等待的锁,
2021-06-24
GDB 调试子进程:follow-fork-mode GDB 调试子进程:follow-fork-mode
例子#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = for
2021-06-12
GDB attach 报错 Operation not permitted 的解决 GDB attach 报错 Operation not permitted 的解决
在进入gdb后,直接使用 attach ID,出现下面的情况: Could not attach to process. If your uid matches the uid of the target process, check t
2021-05-31
GDB attach 调试已运行的进程 GDB attach 调试已运行的进程
例子#include <stdio.h> #include <pthread.h> void *thread_func(void *p_arg) { while (1) { printf("%s\
2021-05-19
GDB 锁定调度器:只让一个线程运行 GDB 锁定调度器:只让一个线程运行
例子#include <stdio.h> #include <pthread.h> int a = 0; int b = 0; void *thread1_func(void *p_arg) { while (1)
2021-05-07
GDB 调试多线程:从创建示例到逐线程调试 GDB 调试多线程:从创建示例到逐线程调试
1. 线程的查看首先创建两个线程: #include <stdio.h> #include <unistd.h> #include <pthread.h> #include <stdlib.h> #include &
2021-04-25
GDB 查看线程信息 GDB 查看线程信息
例子#include <stdio.h> #include <pthread.h> void *thread_func(void *p_arg) { while (1) { printf("%s\
2021-04-13
GDB 变量查看:print、display 与 watch GDB 变量查看:print、display 与 watch
前言在启动调试以及设置断点之后,就到了我们非常关键的一步——查看变量。GDB 调试最大的目的之一就是走查代码,查看运行结果是否符合预期。既然如此,我们就不得不了解一些查看各种类型变量的方法,以帮助我们进一步定位问题。 准备工作本文辅助说明程
2021-04-01
GDB 常用命令速查 GDB 常用命令速查
gdb 是一个在 UNIX 环境下的命令行调试工具。如果需要使用 gdb 调试程序,请在 gcc 时加上 -g 选项。下面的命令部分是简化版,比如使用 l 代替 list 等等。 1. 基本命令1)进入GDB: # gdb test tes
2021-03-20
GDB 调试基础:启动、断点与单步执行 GDB 调试基础:启动、断点与单步执行
gdb 是一个强大的命令行调试工具,下面的内容按照调试一个程序的完整流程展开:启动程序、设置断点、单步执行、查看状态,直到定位问题。 在GDB中运行程序一、启动程序如果在启动 gdb 时没有指明程序,可以使用命令 file 或 exec-f
2021-03-08
程序调试工具箱:GDB 入门与常用分析工具 程序调试工具箱:GDB 入门与常用分析工具
GDB 是 GNU 发布的、运行在 UNIX/Linux 下的命令行调试器,也是 Linux 下 C/C++ 程序员必不可少的工具。它的命令很多,但日常调试只需掌握其中约十个。本文先从一个完整的调试过程讲起,再延伸介绍 pstack、str
2021-02-24
1 / 2