问题标签 [dumpbin]
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++ - DUMPBIN 不显示所有功能
我DUMPBIN
在以下程序中使用了 Microsoft Visual C++ 的实用程序。我确定调用remove
最终会调用DeleteFileW
来自的 Microsoft 系统调用kernel32.dll
(我用另一个工具确认此调用)。那么为什么当我申请DUMPBIN /imports
以下程序的.EXE 时,我没有看到DeleteFileW
系统调用呢?
如何查看DeleteFileW
using的系统调用DUMPBIN
?
谢谢,吉拉德
c++ - 为什么导入表中没有 memcpy?
当我在符号列表中看到时,我正在使用由 Visual Studio 生成的 pdb memcpy
,因此我使用 dumpbin 检查可执行文件中的导入表,但没有对memcpy
那里的引用。
不是memcpy
从crt库导出的函数吗?如果是这样,为什么我在 dumpbin 的输出中看不到它?
c - C程序新段声明
我有这个简单的代码测试代码:
谁能告诉我为什么如果我转储这个文件我只得到这个默认部分:
- 。数据
- .rdata
- .reloc
- .rsrc
- 。存根
- 。文本
它没有生成的 .code 段。我想我曾经在一些以前的项目中这样做过,我做错了什么吗?
-- 进一步测试 --
- 转储
.obj
文件.code
部分显示。 .stub
显示倾销.exe
或.obj
- 删除
#pragma comment(linker,"/SECTION:.code,ERW")
不起作用 - 添加
#pragma comment(linker,"/SECTION:.stub,ERW")
并没有改变dumpbin结果.exe
,.stub
仍然显示 - 将名称从 更改
.code
为.somethingelse
也不起作用,结果相同
c++ - 为什么我需要为不同的图像类型提供不同的转储选项?
我最近一直在使用.dumpbin
来查看一些静态库中的符号dumpbin foo.lib /symbols
。我想看看它如何用于可执行文件和 DLL。
我的第一个观察结果是dumpbin foo.{exe|dll} /symbols
什么都不返回。
对于 DLL,我观察到 export 选项是获取符号数据所必需的:
dumpbin foo.dll /exports
. 为什么在这种情况下需要这个选项?如果相应的 *.iobj 文件可用,我可以使用dumpbin foo.iobj /symbols
转储所有符号,而我假设 DLL 上的 /exports 仅显示 DLL 公开的符号。
对于可执行文件,dumpbin bar.exe /symbols
什么也不产生,dumpbin bar.exe /exports
似乎转储了一些符号。
谁能解释这里的引擎盖下发生了什么?
c++ - 查找导致依赖的目标文件
我的情况有点特殊:我有一个应用程序在使用 MSVC 编译时会编译、链接和启动。我现在正在重新编译它 clang-cl,这会导致它编译、链接和崩溃。
感谢 Dependency Walker,我发现正在加载意外的 DLL。就我而言,要找到std::allocator<char>::allocator(allocator const &)
.
有了这个,我目前有以下信息:
- 需要此符号的 DLL
- 暴露符号的 DLL
- 给出问题的符号
为了记录错误,我应该能够将代码减少到可接受的大小。上传整个专有代码库不是一种选择,上传一个 20 行的 .cpp 文件是一种选择。
为了减少,我需要找到需要这个符号的 .cpp/.obj 文件。从那里开始,减少它就变得容易了。
有了这个,我正在寻找一种方法来检测 .obj 文件是否在不同的 DLL 中搜索符号。
我已经发现:
- dumpbin /SYMBOLS:告诉我符号导出的位置
- dumpbin /DEPENDENTS:告诉我一个 DLL 依赖的 DLL
不转储导入函数的名称。
如何根据 .obj 文件转储导入函数的名称?
c++ - 为什么导出的 dll 函数末尾的 @number 符号
我有一个包含超过 400 个函数的 dll,而我的 exe 文件仅使用 dll 中的 15 个函数,所以我需要创建一个新的 dll 并导出函数并伪造它们的返回值以模拟更复杂系统的输出.
我尝试过的:
dumpbin /exports vxlapi.dll (original dll): 显示重复的函数名(不是所有函数)
注意:在 dll 的头文件中,函数声明如下:
在 dumpbin / export dll 中为什么函数名以 '_' 下划线开头并以 '@number' 结尾,注意:exe 正在使用 let's say(decorated) 函数,以及如何创建新的 dll 和导出函数包含@,
c++ - 垃圾箱和_MSC_VER
我正在 Visual Studio 2017 版本 15.7 VCToolsVersion 14.14.26428 中开发 C++。
我注意到当我dumpbin
在静态库上运行时,我得到的 _MSC_VER 版本与预期的不同。
为了说明我的问题,我创建了一个静态库 testDumpbin.lib,其中包含一个简单的类 testClass:
测试类.h:
测试类.cpp:
我添加了一些打印 _MSC_VER 宏的预处理器行。
当我在调试模式下编译这段代码时(关闭属性中的预编译头文件 - C/C++),我得到:
这是我所期望的,因为我正在运行工具集 14.14(另请参阅https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B)
然后我继续使用dumpbin
(可以从 VS 开发人员命令提示符运行,您可以从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\LaunchDevCmd.bat 启动):
在那里我发现_MSC_VER = 1900:
为什么输出中没有 _MSC_VER = 1914 dumpbin
?
非常感谢你的帮助!
windows - 为什么 dumpbin 中可执行文件的入口点地址与 WinDbg 不同?
我试图了解加载可执行文件的机制,所以我用 notepad.exe 做了两个不同的测试
1)运行dumpbin命令:
我在 OPTIONALHEADER VALUES 下得到以下值:
2)运行WinDbg:
我得到了这些:
我不明白为什么 14001AC50 和 00b9bf90 是不同的值。它们不应该是相同的 AddressOfEntryPoint 值吗?
提前致谢
c++ - 在 dumpbin 中看不到导出的函数
在 lib1.lib 中,我导出了一个名为 foo() 的函数。当我调用 dumpbin /exports my.dll 时,我看不到该功能。我应该怎么办?我在 Visual Studio 2017 C++ 中这样做。
c# - dumpbin.exe 找到依赖项的存在
我需要验证可执行文件的依赖项是否存在,如果可能的话,该依赖项的正确版本。包括依赖项的依赖项。使用 dumpbin.exe,我可以收集 exe 或 dll 的依赖项。例如
我正在通过 C# 中的 Process.Start() 读取 dumpbin.exe 的输出并解析返回数据,没问题。我还可以验证文件是否存在,很容易......但是,完全有可能系统上存在多个依赖项的依赖项。您将如何验证是否存在正确的依赖项或所述依赖项的版本?这变得很重要,因为验证依赖项的依赖项也存在。如果有办法超越就好了
对此有什么想法吗?提前致谢!(PS-如果我在dll位置方面完全错误,比如它只能存在于.exe的执行路径或system32中,请告诉我,谢谢)