我正在使用c ++编写Mac游戏,我正在获取SIGABRT,控制台会打印以下内容:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_lexical_cast> >'
what(): bad lexical cast: source type value could not be interpreted as target
Program received signal: “SIGABRT”.
所以,我做了一个糟糕的lexical_cast。但问题是我无法知道在哪里,因为调用堆栈如下:
#0 0x7fff85fb629a in mach_msg_trap
#1 0x7fff85fb690d in mach_msg
#2 0x7fff81f58932 in __CFRunLoopRun
#3 0x7fff81f57dbf in CFRunLoopRunSpecific
#4 0x7fff88dba7ee in RunCurrentEventLoopInMode
#5 0x7fff88dba5f3 in ReceiveNextEventCommon
#6 0x7fff88dba4ac in BlockUntilNextEventMatchingListInMode
#7 0x7fff84f85e64 in _DPSNextEvent
#8 0x7fff84f857a9 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
#9 0x7fff84f4b48b in -[NSApplication run]
#10 0x7fff84f441a8 in NSApplicationMain
#11 0x1000ef759 in os_gameMainLoop at main-osx.mm:22
#12 0x10009a97d in main at words.cpp:18
这不是正确的堆栈。
什么是match_msg_trap?
我收到这个电话堆栈了吗?
我有什么方法可以在崩溃时得到一个好的调用堆栈吗?
谢谢!
答案 0 :(得分:2)
调试器在错误的线程中停止。在GDB中尝试t a a bt
以查看所有线程的回溯。
mach_msg_trap
是线程在等待消息进入时停放的位置。因此,您正在查看未运行的线程。 Mach是OS X上消息传递接口的名称。