2
我也遇到过其中存在以下可能性不大代码一个奇怪的场景:未捕获的异常 - 调试运行技术(C++)
try{
throw Core::ValueError();
}
catch (Core::Error &e){
...
}
导致(ValueError异常与错误继承的std ::例外继承)如果编译到可执行文件中,则会捕获异常,但如果编译到特定的共享库中则不会。
所以我的问题:
什么样的调试工具和/或技术,我可以使用黑盒是异常处理过程里面偷看?我可以用gdb来完成它吗?
是否有任何信息可以从Mach-o标题中提取出来,告诉我有关某些catch子句的某些例外情况(如果您愿意的话)的任何可能性?特别是,我可以在“gcc_except_tab”部分看看它可爱的LSDA或符号表或其他部分,并推断出符号可见性或与捕获异常相关的其他问题的任何问题吗?
我确实发现声称使用鸡,七个老鼠尾巴和粒子加速器解决方案的在线资源,但我想我会先试的StackOverflow离开魔法作为最后的手段。
(我运行的i686-苹果darwin10-G ++ - 4.2.1 OSX 10.6.7)
所有帮助表示赞赏。 谢谢!
发布一个完整的,最小的示例来演示问题。我尝试将该代码编译为共享库,并且按预期捕获异常。 – 2011-05-27 01:32:56
是的,我得到了一个简单的重建尝试的结果(异常被捕获)。所以现在我有一个简单的例子,一个复杂的例子,但不是比较它们的工具。我开始从原始代码中删除部分,以尽量减少它,但仍然在复制问题,但我仍在处理一个黑盒 - 我想知道更多。 – 2011-05-28 06:46:24