当前位置: 首页 > news >正文

Linux下C/C++服务端崩溃排查手册

本文是Linux下C/C++服务端崩溃排查(gdb调试)操作手册,适用于gRPC/AI推理等服务端程序,遇到段错误、崩溃、莫名退出等问题时可直接参考。


Linux下C/C++服务端崩溃排查手册(gdb调试法)

适用场景

  • 服务端程序(如gRPC/AI推理/SDK集成等)运行时崩溃、段错误(Segmentation fault)、core dumped
  • 程序无明显报错但进程异常退出
  • 需要定位C/C++后端的崩溃原因

步骤一:准备调试环境

  1. 确保已安装gdb

    which gdb
    # 若未安装
    sudo apt install gdb
    
  2. 建议编译时加上调试信息(-g)

    • CMake项目可加:set(CMAKE_BUILD_TYPE Debug)
    • 或手动加:-g -O0

步骤二:用gdb启动服务端

  1. 进入服务端可执行文件所在目录

    cd /path/to/your/server
    
  2. 用gdb启动服务端

    gdb ./FaceRecognitionGRPCServer
    
  3. 在gdb提示符下输入

    run --address localhost:50051 --model-path ./test_res/  # 按实际参数填写
    

步骤三:复现崩溃

  1. 保持gdb窗口开启,不要退出
  2. 用客户端(如pclient.py)多次请求服务端,操作直至服务端崩溃或复现问题

步骤四:获取崩溃调用栈

  1. 服务端崩溃后,gdb会自动停在出错位置
  2. 在gdb中输入
    bt
    
    backtrace
    
  3. 复制终端输出的调用栈信息

步骤五:分析和保存结果

  • 将调用栈(bt)结果保存,发给开发者或用于自己分析
  • 重点关注最上方的函数(#0、#1、#2),通常是出错点
  • 若涉及第三方库(如libInspireFace.so、libopencv等),可结合源码和参数进一步定位

常见补充命令

  • 查看源码行号(需有调试信息):list
  • 查看变量值:print 变量名
  • 继续运行:continue
  • 退出gdb:quit

示例

gdb ./FaceRecognitionGRPCServer
(gdb) run --address localhost:50051 --model-path ./test_res/
# 用客户端多次请求,服务崩溃
(gdb) bt
#0  0x00007ffff79ae42e in MNNSamplerC3Bilinear(...) from libInspireFace.so
#1  ...
#2  ...
#N  main ...

常见问题与建议

  • 没有调试信息:调用栈只有地址无函数名,建议重新编译加-g
  • core文件分析:如有core文件,可用gdb ./FaceRecognitionGRPCServer core
  • 多线程程序:可用thread apply all bt查看所有线程栈

总结

  1. 用gdb启动服务端,run带参数
  2. 客户端复现崩溃
  3. gdb中输入bt获取调用栈
  4. 保存/分析调用栈,定位问题
http://www.lryc.cn/news/604867.html

相关文章:

  • VMware16安装Ubuntu-22.04.X版本(并使用桥接模式实现局域网下使用ssh远程操作Ubuntu系统)
  • Linux 进程管理与计划任务设置
  • 16-C语言:第17天笔记
  • UnityHub Validation Failed下载编辑器错误,添加模块报错的解决方案
  • 外网访问文档编辑器Docsify(Windows版本),内网穿透技术应用简便方法
  • 论文阅读|ArxiV 2024|Mamba进一步研究|VSSD
  • Linux虚拟内存
  • Vision Transformer (ViT) 详解:当Transformer“看见”世界,计算机视觉的范式革命
  • LeetCode 160:相交链表
  • 【推荐100个unity插件】Unity 创意编程库——Klak插件的使用
  • 数据驱动的自动驾驶虚拟测试方法
  • Qt 嵌入式设备驱动开发
  • 5种安全方法:如何删除三星手机上的所有内容
  • 【同济大学】双速率自动驾驶架构LeAD:端到端+LLM,CARLA实测93%路线完成率,性能SOTA!
  • 谈谈毕业工作一年后的变化
  • 虚幻基础:模型碰撞体
  • Javascript 基础总结
  • # C语言:20250730学习(二级指针)
  • C语言实战:字符串动态展开效果
  • 酵母文库:基因功能研究的核心工具
  • BWCTAKC11X64G佰维/BIWIN存储容量为64GB
  • 魔塔社区上文生图大模型对比
  • Windows Server 2019 查询最近7天远程登录源 IP 地址(含 RDP 和网络登录)
  • Akamai CloudTest before 60 2025.06.02 XXE注入导致文件包含漏洞(CVE-2025-49493)
  • 【HarmonyOS】鸿蒙应用HTTPDNS 服务集成详解
  • 计算机网络基础(二) --- TCP/IP网络结构(应用层)
  • idea 集成飞算Java AI 教程
  • [SKE]UVM环境下OpenSSL加密算法参考模型设计
  • B站 XMCVE Pwn入门课程学习笔记(6)
  • Java 大视界 -- 基于 Java 的大数据分布式计算在地质勘探数据处理与矿产资源预测中的应用(372)