amxx插件脚本编写教程6-插件调试
条评论文章目录
我们这里主要将的是runtime错误的调试,对于编译错误,可以由编译器来完成,这里不涉及。
你可以在配置加载插件时开启debugger调试,打开amxmodx\configs\plugins.ini文件,然后在插件名称后边加上debug即可
1 | myplugin.amxx debug |
当你运行过程中出现错误时,你将会在日志或者控制台中看到全部的错误跟踪。
1 | L 09/15/2004 - 17:38:17: [AMXX] Run time error 4 (index out of bounds) on line 46 (file "debug.sma"). |
如上,这种错误叫做runtime错误,这种错误通常是在解析程序中产生的。
- 第25行,错误代码在debug.sma中
- 第25行调到第40行执行
- 第40行调到46行执行,这里是错误真正产生的地方
下边的这种错误是amxx插件开发中,最常见的3种错误之一。下标索引超出了数组范围:
1 | new array[5] |
还有一种常见的错误是AMX_ERR_STACKERR错误,意思是你插件的内存空间不足。默认每个插件给的内存空间是16KB,你可以通过在代码中加上下边的语句来扩充插件内存空间。
1 |
这个语句意思是将内存空间设置到128KB(32位,sizeof(cell) == 4),这个动态的内存空间单位是cell,即32678 * 4 / 1024 = 128KB,其中4表示是32位系统cell是4字节,如果是64位系统的话,cell的大小应该是8字节。
AMX_ERR_STACKLOW和AMX_ERR_HEAPLOW的错误也是类似的。
最后,还有一个常见的错误就是AMX_ERR_NATIVE,意思是在sma中调佣native函数出错,有可能是传入的参数错误,也有可能是被调佣的module内部代码本身就有错误。