Mac:我收到 SIGABRT 但调用堆栈没用

发布于 2024-10-31 03:27:25 字数 1149 浏览 0 评论 0原文

我正在用 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?
我为什么会得到这个调用堆栈?
我有什么办法可以在崩溃时获得良好的调用堆栈吗?

谢谢!

I'm coding a game for Mac in c++, and I'm getting a SIGABRT, and the console prints the following:

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”.

So, I'm doing a bad lexical_cast. But the problem is that I can't know where, because the call stack is as follows:

#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

That´s not the right stack.

What's match_msg_trap?
Whay am I getting this call stack?
Do I have any way to get a good call stack on the crash?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑看君怀她人 2024-11-07 03:27:25

调试器停止在错误的线程中。尝试在 GDB 中使用 taa bt 来查看所有线程的回溯。

mach_msg_trap 是线程在等待消息传入时驻留的位置。因此,您正在查看一个未运行的线程。 Mach 是 OS X 上消息传递接口的名称。

The debugger stopped in the wrong thread. Try t a a bt in GDB to see backtraces for all the threads.

mach_msg_trap is where threads park while they are waiting for a message to come in. So, you are looking at a thread that isn't running. Mach is the name of the message-passing interface on OS X.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文