可以'Don’我没让windberg认出我的分机
Can't get windbg to recognise my extension
不幸的是,由于某种原因,我无法理解,我无法让windbg识别我的扩展。
#ifndef EXPT_API
#define EXPT_API __declspec(dllexport)
#endif
extern "C" EXPT_API HRESULT CALLBACK help(PDEBUG_CLIENT Client, PCSTR args)
{
IDebugControl* Control;
IDebugSymbols* Symbols;
DebugCreate(__uuidof(IDebugClient),(void **)&Client);
Client->QueryInterface(__uuidof(IDebugControl), (void **)&Control);
Client->QueryInterface(__uuidof(IDebugSymbols), (void **)&Symbols);
// TODO: Extension code goes here:
Control->Output(DEBUG_OUTPUT_NORMAL, "A sample help message.");
return S_OK;
}
这一切都编译得很好,然而,每当我试图从windbg加载扩展时,我都会得到这样的结果:
!Extension.help
No export help found
我把我的.dll加载到IDA Pro Free中,然后查看导出,它就在那里:"help"。我已经想了好几个小时了。如能提供任何帮助,我们将不胜感激。非常感谢。
很可能您使用的是stdcall调用约定,即使使用extern"C"也会导致名称篡改。如果你使用cdecl,情况就不会是这样了。如果您遵循编写WinDBG扩展名的标准方法,则可能需要stdcall,因此解决名称篡改问题的最佳方法是使用.def文件,该文件将允许您根据需要调用导出。
请参阅上一个问题,以获得关于微妙之处的良好概述:
__Windows上的cdecl或__stdcall?
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为什么我的 std::ref 无法按预期工作?
- clang整洁10忽略了我的NOLINT命令
- 可以'Don’我没让windberg认出我的分机