了解 macOS 的分段错误
Understanding segmentation fault error for macOS
当 运行 我的应用程序收到分段错误时,弹出 window 让我知道:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0x0000000128108eb3 WP_ForcePowerRun(gentity_s*, forcePowers_t, usercmd_s*) + 4435
0x0000000128107c15 WP_ForcePowersUpdate(gentity_s*, usercmd_s*) + 501
0x0000000128033bc1 ClientThink_real(gentity_s*, usercmd_s*) + 1153
0x0000000128035843 ClientThink(int, usercmd_s*) + 995
0x00000001280bf68a NPC_Think(gentity_s*) + 1786
0x000000012805ef4a G_RunFrame(int) + 1418
0x000000010d28b4d0 SV_Frame(int, float) + 576
0x000000010d266c4c Com_Frame() + 588
0x000000010d2d7525 main + 389
0x00007fff2046af3d start + 1
所以我有两个问题:
- 每个函数右侧的数字是多少,即 +4435、+501 等?
- 有什么方法可以确定发生段错误的具体行号吗?
这些是偏移量,也就是函数开始后发生故障的字节数。
您可以使用调试符号进行编译并使用像 GDB 这样的调试器。
当 运行 我的应用程序收到分段错误时,弹出 window 让我知道:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0x0000000128108eb3 WP_ForcePowerRun(gentity_s*, forcePowers_t, usercmd_s*) + 4435
0x0000000128107c15 WP_ForcePowersUpdate(gentity_s*, usercmd_s*) + 501
0x0000000128033bc1 ClientThink_real(gentity_s*, usercmd_s*) + 1153
0x0000000128035843 ClientThink(int, usercmd_s*) + 995
0x00000001280bf68a NPC_Think(gentity_s*) + 1786
0x000000012805ef4a G_RunFrame(int) + 1418
0x000000010d28b4d0 SV_Frame(int, float) + 576
0x000000010d266c4c Com_Frame() + 588
0x000000010d2d7525 main + 389
0x00007fff2046af3d start + 1
所以我有两个问题:
- 每个函数右侧的数字是多少,即 +4435、+501 等?
- 有什么方法可以确定发生段错误的具体行号吗?
这些是偏移量,也就是函数开始后发生故障的字节数。
您可以使用调试符号进行编译并使用像 GDB 这样的调试器。