如何在命令行lldb中显示CGAL异常

迈克尔·伯尔

我通常手动调试代码,但是我试图使用lldb调试CGAL项目。因此,这是一个新手lldb问题。以下代码导致异常(这是预期的行为)。当我在Xcode中编译并运行以下代码时(使用os-x的内置clang编译器)

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Polygon_with_holes_2.h>
#include <CGAL/Boolean_set_operations_2.h>

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Point_2<K> Point;
typedef CGAL::Polygon_2<K> Polygon_2;
typedef CGAL::Polygon_with_holes_2<K> Polygon_with_holes_2;

int main(){
    Polygon_2 p,q;
    Polygon_with_holes_2 r;

p.push_back(Point(0,0));
p.push_back(Point(1,0));
p.push_back(Point(1,1));

q.push_back(Point(0,0));
q.push_back(Point(0,1));
q.push_back(Point(1,1));

CGAL::join(p,q,r);

return 0;
}

我得到以下信息:

CGAL warning: check violation!
Expression : valid_orientation
File       : /opt/local/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h
Line       : 310
Explanation: The polygon has a wrong orientation.
Refer to the bug-reporting instructions at http://www.cgal.org/bug_report.html
CGAL error: precondition violation!
Expression : is_valid_unknown_polygon(p, t)
File       : /opt/local/include/CGAL/General_polygon_set_on_surface_2.h
Line       : 45
Explanation: 
Refer to the bug-reporting instructions at http://www.cgal.org/bug_report.html
libc++abi.dylib: terminating with uncaught exception of type CGAL::Precondition_exception: CGAL ERROR: precondition violation!
Expr: is_valid_unknown_polygon(p, t)
File: /opt/local/include/CGAL/General_polygon_set_on_surface_2.h
Line: 45
(lldb) 

我想知道如何在命令行上从lldb获取相同的信息。

吉姆·英厄姆(Jim Ingham)

我不知道你想得到什么。通过在异常引发上设置断点,可以使lldb停止在将要引发异常的位置:

(lldb) break set -n __cxa_throw

然后,您将在调试器中将要交付异常的位置停止。查看异常的上下文通常会很有帮助。请注意,如果您正在使用的库或您自己的代码使用了很多异常,则遍历所有不相关的匹配项可能会很乏味……如果您只想查看回溯,可以在打印断点的地方放置命令回溯并继续。最后打印的将是有趣的一个。

(lldb) br comm add
Enter your debugger command(s).  Type 'DONE' to end.
> bt 
> continue 
> DONE

这会将命令添加到最后一个设置的断点(如果断点号不是最后一个,则将其指定为命令的参数)。

请注意,最有可能在抛出错误之前,错误代码只是被错误代码检查并打印出来。调试器无法知道这是一件特殊的事情,它能做的最好的事情就是将它与其他所有要发送到stderr的文本一起打印到控制台上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在MySQL的命令行中显示变量的值?

来自分类Dev

如何在Unix命令行中显示多个图像?

来自分类Dev

如何在我的命令行中显示消息文本?

来自分类Dev

如何在命令行中打开显示设置?

来自分类Dev

如何在命令行中显示apt-get安装建议?

来自分类Dev

如何在Lubuntu 11.10中从命令行显示声卡驱动程序的名称?

来自分类Dev

如何在Windows中显示所有进程的完整命令行

来自分类Dev

如何在命令行中创建仅显示该目录文件夹的树结构

来自分类Dev

如何在命令行中显示apt-get安装建议?

来自分类Dev

如何在命令行中的Putty中禁用Pageant?

来自分类Dev

如何在ruby命令行中传递URL?

来自分类常见问题

如何在CentOS命令行中搜索文件

来自分类常见问题

如何在python中通过命令行给元组

来自分类Dev

如何在kubernetes中传递命令行参数?

来自分类Dev

如何在命令行中更改gnome终端字体?

来自分类Dev

如何在.csx脚本中访问命令行参数?

来自分类Dev

如何在Wix中添加命令行参数

来自分类Dev

如何在Windows命令行中运行.py文件?

来自分类Dev

如何在命令行中复制Knit HTML?

来自分类Dev

Xcode命令行工具-如何在终端中运行?

来自分类Dev

如何在SICStus Prolog中访问命令行参数?

来自分类Dev

.phar文件如何在命令行中执行

来自分类Dev

如何在StatET中设置R命令行参数

来自分类Dev

如何在buildbot的shell命令行中添加“ &&”?

来自分类Dev

如何在锡兰中获取命令行参数?

来自分类Dev

如何在Racket中返回命令行结果?

来自分类Dev

如何在Spring配置中访问命令行参数?

来自分类Dev

如何在命令行中跳过对“&”符号的评估?

来自分类Dev

如何在SQL命令行中按月汇总值?

Related 相关文章

热门标签

归档