我遇到的问题是,我经常编写的 Mac 应用程序突然退出,出现一个未知的退出代码 33,并且没有任何进一步的迹象表明出了什么问题。我已经搜索了数字 33 的整个源代码,但我找不到任何东西(我希望有一行代码,例如exit(33)
)。
你能给我任何提示我如何追踪这个问题吗?有没有办法例如在退出函数或类似的东西中设置断点?
进程退出代码没有预定义的含义。C 标准定义EXIT_SUCCESS
和EXIT_FAILURE
没有数值。在类 Unix 系统上,它们被定义为 0 和 1。Unix 将这些退出限制为一个无符号的 8 位整数,因此它们的范围从 0 到 255,但每个退出代码的含义(成功的 0 除外)取决于开发商。
FreeBSD 定义了一些值,如sysexits(3) 联机帮助页中所述。但33号不在其中。
调试此问题的最佳方法是为各种exit
函数 ( exit
, _exit
) 设置断点,并查看它们何时何地被调用。
问题是我的代码中有一个退出调用exit(12321)
,它在控制台中报告为 33。似乎状态参数exit(int)
不能是任意的 int 值。