跟踪符号的发射
我正在调试一些嵌入的代码,这些代码不能通过“panic_never”板条箱出现恐慌。尽管如此,rust_begin_unwind 符号还是在某处发出,并且无法找到其来源。是否有任何工具或方法可以理解是什么触发了目标文件中给定符号的发射(在链接之前)?谢谢
I’m debugging some embedded code that must not panic through the "panic_never" crate. Still, the rust_begin_unwind symbol is emitted somewhere and can’t find its origin. Is there any tool or method to understand what triggers the emission of a given symbol in object files (before linking) ? Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
步骤1:找到引用该符号的对象。您可以添加链接器 rustc -C link-args=-Wl,-y,rust_begin_unwind ,它应该打印引用该符号的所有对象,或者通过运行 nm -A *.o | grep rust_begin_unwind。
第 2 步:找出给定对象具有引用的原因:将产生此问题
.o
的源代码编译为程序集(说明)。 Assembly 应该让您了解为什么rust_begin_unwind
被调用。Step 1: find the object which references the symbol. You could add the linker
rustc -C link-args=-Wl,-y,rust_begin_unwind
, which should print all objects which reference the symbol, or by runningnm -A *.o | grep rust_begin_unwind
.Step 2: find out why a given object has the reference: compile the source which produced this problematic
.o
to assembly (instructions). Assembly should give you an idea of whyrust_begin_unwind
is being called.