C++ 使用堆栈跟踪检测函数
我正在看一个带有调试器的应用程序(我没有源代码!)。 我在某个函数(导出函数)中放置了一个断点,然后查看堆栈跟踪。 显然,我看不到符号,但我可以看到DLL名称和序号 我的问题是如何判断堆栈跟踪中看到的函数是否已导出?或者更准确地说,我在堆栈跟踪中看到的序号是否与我在dependency walker中看到的序号相同C++ 使用堆栈跟踪检测函数,c++,debugging,stack-trace,symbols,C++,Debugging,Stack Trace,Symbols,我正在看一个带有调试器的应用程序(我没有源代码!)。 我在某个函数(导出函数)中放置了一个断点,然后查看堆栈跟踪。 显然,我看不到符号,但我可以看到DLL名称和序号 我的问题是如何判断堆栈跟踪中看到的函数是否已导出?或者更准确地说,我在堆栈跟踪中看到的序号是否与我在dependency walker中看到的序号相同 非常感谢!:-) 从Visual Studio命令提示符启动的命令dumpbin\exports name.dll,将告诉您所有导出的函数 这是一台windows机器。我不太明白你所
非常感谢!:-) 从Visual Studio命令提示符启动的命令
dumpbin\exports name.dll
,将告诉您所有导出的函数
这是一台windows机器。我不太明白你所说的“名字”和“工具链”是什么意思TCS TCS:我暗示了一个事实,即有多个调试器和多个链接器可以在DLL中生成不同类型的元数据 在这一点上,我已经用很好地“调试”(检查/审核)了第三方软件(包括DLL),现在似乎有了全新的版本2.0() 它使代码分析成为一种时髦(我想,如果您熟悉汇编语言和动态加载的话)。它当然很容易跟踪哪个模块调用哪个模块,并将这些(调用)映射到符号名(如果可用)。特别是OllyDbg是免费的 在商业方面,我相信有几种类似的工具,我记得它们是最有名的 希望有帮助
它将利用调试符号(如您可以从Microsoft下载的符号),甚至将Win32 API的参数转换为有意义的名称(即WM_PAINT而不是常量,也知道预期的LPPARAM布局等) POW:“说出你的名字、平台和工具链”?这是一台windows机器。我不太明白你说的“名字”和“工具链”是什么意思。嘿,谢谢你的回答。我知道如何查看导出的函数,但我不知道在调用堆栈中看到的序号是否与在dependency walker中看到的相同。