CrashDetect 插件技术文档
本文档将详细介绍如何安装、使用 CrashDetect 插件,以及如何使用其 API。CrashDetect 是一款用于帮助调试运行时错误和服务器崩溃的工具,它能够在发生错误时提供详细的错误描述、堆栈跟踪和其他有用的信息,以便快速定位和解决问题。
1. 安装指南
1.1 下载二进制包
从 GitHub 的 Releases 页面下载二进制包,或者从源代码自行构建(见下面的“从源代码构建”)。
1.2 安装插件
- 解压下载的二进制包,将
crashdetect.so
(Linux)或crashdetect.dll
(Windows)复制到<服务器>/plugins/
目录下。 - 在
server.cfg
文件的plugins
行中添加crashdetect
(Windows)或crashdetect.so
(Linux)。
二进制包中包含一个头文件 crashdetect.inc
,其中包含一些可能非常有用的辅助函数。但请注意,您不需要包含它即可使用 CrashDetect。
2. 使用说明
除了安装插件外,您无需进行任何其他操作即可开始接收到错误报告。默认情况下,所有错误都会保存在 server_log.txt
文件中,但这可以通过配置进行更改(见下面的“配置”)。
为了获得更好的调试体验,请确保您的脚本在启用调试信息的情况下编译。这样做将使堆栈跟踪中显示更多信息,例如函数名、参数名和值、源文件名和行号。
请注意,使用此插件时,您的代码将运行得更慢,因为检测错误并提供准确错误信息的相关开销。通常这在开发过程中是可以接受的,但不建议在具有许多玩家的生产(实时)服务器上加载 CrashDetect。
3. 项目API使用文档
以下是 crashdetect.inc
中定义的一些函数,它们为访问插件信息提供了更友好的 API。
bool:IsCrashDetectPresent()
- 检查 CrashDetect 插件是否已加载。SetCrashDetectLongCallTime(us_time)
- 设置长时间函数调用的警告阈值。GetCrashDetectLongCallTime()
- 获取长时间函数调用的警告阈值。DisableCrashDetectLongCall()
- 禁用长时间函数调用警告。EnableCrashDetectLongCall()
- 启用长时间函数调用警告。ResetCrashDetectLongCallTime()
- 将长时间函数调用阈值重置为默认值(从server.cfg
中获取)。RestartCrashDetectLongCall()
- 重置长时间函数调用的计时器。bool:IsCrashDetectLongCallEnabled()
- 检查长时间函数调用检测是否已启用。bool:HasCrashDetectLongCall()
- 检查当前版本的 CrashDetect 是否支持此功能。GetCrashDetectDefaultTime()
- 获取默认的长时间函数调用阈值。DisableCrashDetectAddr0()
- 在此模式下禁用对地址零的写入检测。EnableCrashDetectAddr0()
- 在此模式下启用对地址零的写入检测。bool:IsCrashDetectAddr0Enabled()
- 检查错误是否已启用。bool:HasCrashDetectAddr0()
- 检查当前版本的 CrashDetect 是否支持此功能。
4. 项目安装方式
4.1 从源代码构建
如果要从源代码构建 CrashDetect,例如修复错误并提交 pull request,只需按照以下步骤操作。您需要安装 C++ 编译器和 CMake。
Linux
安装 gcc 和 g++,make 和 cmake。在 Ubuntu 上,您可以使用以下命令:
sudo apt-get install gcc g++ make cmake
如果您在使用 64 位系统,您需要安装额外的包来编译 32 位程序:
sudo apt-get install gcc-multilib g++-multilib
对于 CentOS:
yum install gcc gcc-c++ cmake28 make
现在您可以构建 CrashDetect:
cd crashdetect
mkdir build && cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF
make
Windows
您需要安装 CMake 和 Visual Studio(Express 版本即可)。之后,可以从命令行运行 cmake:
cd crashdetect
mkdir build && cd build
path/to/cmake.exe ../ -DBUILD_TESTING=OFF
或者从 cmake-gui 中执行相同的操作。这将在构建文件夹中生成一个 Visual Studio 项目。
要构建项目:
path/to/cmake.exe --build . --config Release
您也可以从 Visual Studio 中构建项目:打开 build/crashdetect.sln
并选择“构建”菜单中的“构建解决方案”(或直接按 F7)。
本文档在遵循 2-clause BSD 许可证的情况下提供。
- mybatis-plusmybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava00
- open-eBackupopen-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。HTML055
- 每日精选项目🔥🔥 12.27日推荐:解锁高效测试的新工具-Shortest🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~018
- Cangjie-Examples本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie042
- 毕方Talon工具本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python039
- PDFMathTranslatePDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython03
- advanced-javaAdvanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。JavaScript0103
- taro开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/TypeScript09
- Yi-CoderYi Coder 编程模型,小而强大的编程助手HTML012
- excelizehttps://github.com/xuri/excelize Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 OOXML 技术标准。可以使用它来读取、写入 XLSX 文件,相比较其他的开源类库,Excelize 支持操作带有数据透视表、切片器、图表与图片的 Excel 并支持向 Excel 中插入图片与创建简单图表,目前是 Go 开源项目中唯一支持复杂样式 XLSX 文件的类库,可应用于各类报表平台、云计算和边缘计算系统。Go02