如何"decrypt"链接器方法名称?
How to "decrypt" linker method names?
我正在使用backtrace来打印应用程序的堆栈跟踪,我得到了类似
的东西libQtCore.so.4(_ZN11QMetaObject8activateEP7QObjectPKS_iPPv+0x843) [0x7f889d20cf33]
libQtGui.so.4(_ZN7QAction9triggeredEb+0x32) [0x7f889d76c2f2]
libQtGui.so.4(_ZN7QAction8activateENS_11ActionEventE+0xb0) [0x7f889d76d670]
libQtGui.so.4(+0x6242f4) [0x7f889db862f4]
是否有任何方法将"链接器名称"转换为"源名称"并从偏移量获取代码行号?
我想要反向跟踪,看起来像这样:
libQtCore.so.4 (QMetaObject::activate(QObject):1022)
libQtGui.so.4 (QAction::triggered()::47)
乌利希期刊指南。
我明白,由于编译器的具体情况,这种技术可能工作或不工作或工作不好。我想至少在gcc和visual c++中"demangle"链接器符号
-
在gcc下,你可以使用c++filt来解密混乱
-
在Visual studio下你可以undname
一旦你有了函数名你至少在Windows上你可以使用DIA SDK来获取源文件行号等
这叫做名称混淆。请阅读维基百科上的文章,因为在这里引用它对于答案来说太过了。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 没有为自己的结构调用列表推回方法
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在类定义之后定义一个私有方法
- 枚举环境变量的惯用C++14/C++17方法
- 如何"decrypt"链接器方法名称?