wsl/ubuntu22版本 gdb coredump多线程

本文介绍了在Linux环境下调试多线程程序时遇到的问题,如gdb无法显示详细信息,如何设置core_pattern处理Segmentationfault,以及如何通过编译选项和gdb命令追踪崩溃点和变量值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


每次看到Segmentation fault (core dumped),都很头痛,特别是多线程之间互相调用,记录下在linux上调式过程

ulimit -c unlimited 
ulimit -c 
cat /proc/sys/kernel/core_pattern 

ubuntu 22 coredump想要放的位置

echo "<desired-file-path>/<desired-file-name>" > /proc/sys/kernel/core_pattern

wsl ubuntu 22

//指定文件
sudo sysctl -w kernel.core_pattern=<desired-file-path>/<desired-file-name>

//或者保持默认, 哪里段错误,哪里出现core文件
sudo sysctl -w kernel.core_pattern=core 

然后就会有这个core文件
在这里插入图片描述

gdb使用

gdb <binary-file> <core-dump-file>

在这里插入图片描述

gdb <binary-file> <core-dump-file>

我这个是多线程程序,切换到对应线程

info thread 

在这里插入图片描述

thread id

在这里插入图片描述

然后会看到一堆狗屎,gdb里面啥也没有 ,具体的函数内代码行和局部变量信息由于没有可用的符号表而未能显示,这时候需要在makefile里面重新编译程序并包含 -g 选项以保留符号信息

gcc -g -o simulator source.c  

至此就能看到出问题的函数在这里插入图片描述

查看那个获取导致崩溃的函数调用序列,还能看到看到局部变量的值

bt full    
list my_function        
print 变量        

在这里插入图片描述
看到是currentProcess是空指针 ,非法访问空指针导致段错误
至此问题排查完毕。

### WSL Ubuntu 安装配置与使用教程 #### 一、WSL 的安装与基础设置 为了在 Windows 上运行 Linux 子系统 (WSL),可以按照以下方法完成初始配置。首先,确保已启用 WSL 功能并更新至最新版本: ```bash wsl --install -d Ubuntu-20.04 ``` 上述命令会自动选择并安装指定的 Ubuntu 版本[^1]。 #### 二、Miniconda 或 Anaconda 的安装 对于数据科学开发环境的需求,在 WSL 中可以通过 Miniconda 或 Anaconda 来管理 Python 虚拟环境及相关依赖项。 ##### 1. Miniconda 安装流程 以下是基于 WSLUbuntu 系统下安装 Miniconda 的具体操作指南[^2]: - **下载 Miniconda 安装包** ```bash wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh ``` - **赋予执行权限并启动安装程序** ```bash chmod +x Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh ``` - **初始化 Conda 并验证安装成功** ```bash conda init bash source ~/.bashrc conda list ``` ##### 2. Anaconda 安装流程 如果偏好功能更全面的 Anaconda,则可参考如下步骤[^3]: - **获取官方镜像链接** 访问清华大学开源软件镜像站点或其他可信源地址,例如 `https://mirrors.bfsu.edu.cn/anaconda/archive/` 获取最新的发行版。 - **上传脚本到本地目录** 将下载好的 `.sh` 文件传输至目标路径后执行安装指令: ```bash bash Anaconda3-2023.09-0-Linux-x86_64.sh ``` 注意:需确认文件名与实际一致后再输入相应命令。 #### 三、优化 pip 配置以提升效率 针对国内网络环境下可能出现的速度瓶颈问题,推荐调整 PyPI 源指向更快捷的服务商节点[^4]: 编辑全局配置文件或者直接添加新条目实现更改效果: ```bash pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple ``` 此修改能够显著改善因地理距离引发的数据交换延迟现象。 #### 四、Linux 文件访问方式说明 当涉及到跨平台间资源共享时,可通过特定挂载点快速定位所需资源位置。通常情况下,默认映射结构遵循 `/mnt/<盘符>` 规则;比如 C:\Users\Username 对应于 /mnt/c/Users/Username。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值