---
title: 如何从 core 文件中找到导致 core 的 SQL-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于如何从 core 文件中找到导致 core 的 SQL相关的常见问题和使用技巧，帮助您快速解决如何从 core 文件中找到导致 core 的 SQL的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 如何从 core 文件中找到导致 core 的 SQL

更新时间：2026-06-04 09:56

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：How-to  

如果因为一条 SQL 导致 observer crash ，我们可以从 core dump 文件中找到对应的源头 SQL 语句。

## 适用版本

OceanBase 数据库 V2.x 和 V3.x 版本

## 操作方法

1. 需要从 OceanBase 技术支持人员处获取 OBServer 的 `debuginfo rpm` 包，在安装或者解压后才可以将 observer 线程的 call stack 信息解析成可读的方法名，或者调试 core 文件。

   需注意，需要解压与 OBServer 版本相对应的版本。具体操作如下。

   ```shell
   rpm2cpio oceanbase-debuginfo-xxx.el7.x86_64.rpm | cpio -div

   ```
 2. 将解压出的 `observer.debug` 文件拷贝进 `observer` 目录，默认为 `/home/admin/oceanbase/bin` 目录。
 3. 使用 gdb 调试工具直接打开 core 文件。

   ```shell
   gdb /home/admin/oceanbase/bin/observer core-observer-113058-1614065734

   ```

   #### 注意

   这里是在调试 core 文件，如果直接调试运行中的 observer, 会影响系统的可用性。
 4. 在 gdb 环境下进行输入 bt 获取 core 的具体堆栈。

   ```shell
   （gdb）bt

   ```
 5. 查看 core 堆栈是否存在如下数据。

   ```shell
   #28 0x000000000290dd1a in oceanbase::observer::ObMPQuery::process (this=0x7e8dcb58b4d0) at src/observer/mysql/obmp_query.cpp:277

   ```
 6. 如存在，使用如下命令进入该栈。

   ```shell
   (gdb) frame 28

   ```
 7. 然后执行如下 print 命令查看导致 core 的 SQL。

   ```shell
   (gdb) p *this

   ```

Previous

[如何判断 core 文件是否完整](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207643)

Next

[如何快速确认 core 是否是由于爆栈导致](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000284547) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
