gpt4 book ai didi

C++:assert() 失败会触发任何信号吗?

转载 作者:太空狗 更新时间:2023-10-29 21:06:06 25 4
gpt4 key购买 nike

我想用这个 stacktrace method #4断言失败时的实现。

因此,如果没有信号被触发,您能否建议一种在可执行文件退出之前检测断言失败的方法?

最佳答案

在 Linux 上,assert 失败(如果未使用 -DNDEBUG 禁用)正在执行(来自 /usr/include/assert.h )

# define assert(expr)                                                   \
((expr) \
? __ASSERT_VOID_CAST (0) \
: __assert_fail (__STRING(expr), __FILE__, __LINE__, __ASSERT_FUNCTION))

和内部__assert_fail例程正在调用 abort,它会向进程发送一个 SIGABRT,如果您真的想要的话,您可能会捕获它。

但更简单的方法是拥有您自己的类似“断言”的宏。这就是许多免费软件(带有 g_assert 的 GTK,带有 gcc_assert 的 GCC,...)正在做的事情。

关于C++:assert() 失败会触发任何信号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com