问题标签 [libunwind]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - try-catch 无法在 dlopen 加载的共享库中捕获异常
包含 try-catch 块的库是使用 动态加载dlopen
的,try-catch 块如下所示:
动态加载库 abort 的程序抱怨:
在抛出 ... 的实例后
调用终止 递归调用终止
回溯是:
如果我编译并作为可执行程序运行,它会很好地工作。
有什么想法可以解决这个问题吗?
谢谢。
附言
编译器的版本是:
库的编译标志是:
一个可重现的例子:
你好.cc
编译:
注意打包/链接的libunwind-arm.so
和libunwind.so
,我终于发现这是问题所在。
这两个库是由我的共享库所需的库引入的,删除它们后效果很好。
而main.c:
并编译 main.c:
x86-64 - 为什么 cmp 指令花费太多时间?
我正在尝试使用 libunwind(使用 linux perf)进行配置,通过perf top
监视目标进程,我得到了这个组装时间成本屏幕:
对应的源码在这里trace_lookup 源码,如果我没看错的话,这条热路径指令对应的代码行数cmp
是296行,但是不知道为什么这条线这么慢,而且大部分时间都很费钱?
segmentation-fault - 如果堆栈溢出使进程崩溃,如何通过 libunwind 获取调用堆栈?
我尝试根据现实生活场景编写一段示例代码。场景如下:
- 程序正在调用递归函数
- 堆栈被使用
- 程序崩溃,只有操作系统上的核心转储作为有用信息
我正在尝试编写自己的崩溃处理程序以获得更好的故障排除信息。我还认为,如果在当前阶段,并非所有堆栈溢出异常都被捕获和处理,这可能会很有用。我正在使用 SA_ONSTACK 为信号处理创建一个新堆栈。但是它只允许打印 1 行错误消息 "sig_handler: signal 11" 。但是我无法打印出使用 libunwind 崩溃的调用堆栈(同一段代码适用于堆损坏导致的信号 11——例如空指针)。
有人可以建议在编程SIGSEGV时如何打印调用堆栈,因为stackovflow?
我的测试代码如下:
之后可以通过 g++ stack_overflow_test1.cpp -o stack_overflow_test1 -g -lunwind -Wall -std=c++11 构建并通过 $LD_LIBRARY_PATH=/usr/local/lib ./stack_overflow_test1 执行
python - moviepy libunwind: pc 不在表中,pc=0xFFFFFFFFFFFFFFFF
在 msys mingw 64 里面我运行这个:
该模块可以正常工作,没有问题,但这是什么libunwind: pc not in table, pc=0xFFFFFFFFFFFFFFFF
意思?
autoconf - 如何使用正确的 cxxabi 构建 libunwind.so(nongnu 版本)?
我正在尝试按照官方说明构建 libunwind ( https://github.com/libunwind/libunwind )。构建过程正确完成,但与源自相同代码 src 和版本的 Debian 默认 libunwind.so 相比,我在 libunwind/src/.lib/libunwind.so 中找不到任何 libunwind c++ ABI。
系统库:
我的库:
我在哪里可以找到那些 ABI?
tcmalloc - 如何检查预编译的 libtcmalloc.so 是否在没有 libunwind 的情况下编译?
我什至不知道从哪里开始,为菜鸟问题道歉,但似乎在这个特定案例中没有任何内容,除非有更多我不知道的通用术语。