我试图在 WinDbg 中加载一个 dll,但遇到了这个错误。详情如下。
使用 VisualC++ express 构建 A.dll。
将A.pdb和A.dll放在d:\test\目录下。
设置图片路径和符号路径为d:\test
.sympath gives
OK D:\test
尝试使用以下命令加载
.reload /f A.dll
它给了
"A.dll" was not found in the image list.
Debugger will attempt to load "A.dll" at given base 00000000.
Please provide the full image name, including the extension (i.e. kernel32.dll)
for more reliable results.Base address and size overrides can be given as
.reload <image.ext>=<base>,<size>.
DBGENG: wined3dwddm.dll - Partial symbol image load missing image info
DBGHELP: No header for wined3dwddm.dll. Searching for dbg file
DBGHELP: d:\test\A.dbg - file not found
DBGHELP: d:\test\dll\A.dbg - path not found
DBGHELP: d:\test\symbols\dll\A.dbg - path not found
DBGHELP: .\A.dbg - file not found
DBGHELP: .\dll\A.dbg - path not found
DBGHELP: .\symbols\dll\A.dbg - path not found
DBGHELP: A.dll missing debug info. Searching for pdb anyway
DBGHELP: wined3dwddm - private symbols & lines
d:\test\A.pdb - unmatched
Unable to add module at 00000000
在最后一行“d:\test\A.pdb - unmatched”中,虽然它是这样说的,但我确信 pdb 文件是来自构建结果的文件,安装的 dll 也是从中生成的。
附加问题
由于答案表明 A.dll 可能未加载,这里是一个可能的反例。为此,我需要稍微修改一下问题以反射(reflect)我遇到的现实情况。
我有一组从开源项目构建的 dll(比如,A 到 Z dll)。老实说,我不了解整个项目的全貌,我想通过跟踪函数用 WinDbg 解决这个问题。
此外,当我在进程资源管理器中找到 A.dll 时,它就在那里。 而且,如果我尝试加载 A.dll 的符号,我会收到上述消息。有什么我想念的吗?
为什么我认为 A.dll 已加载
我在 A.dll 中打印一条唯一消息,例如 ("this_is_uniqe_message_from_A.dll"),我可以看到该消息正在连续打印。
我可以在进程资源管理器中看到 A.dll,链接到资源管理器进程。
此外,(我不确定这是否重要),我在 QEMU 1.7.0 版上使用 Windows 8.1。
出现该问题的原因及解决方法
起因:起因其实很简单。我要调试的进程在用户空间中,当我尝试列出已加载的模块时,我处于内核模式。
解决方案:我需要进入用户空间(进入我想要调试的进程),然后才能看到模块列表。另外,我可以设置断点等。
我在 MSDN 论坛上发布了同样的问题,他们回答了我。见
最佳答案
您没有描述您是在进行实时调试还是在分析故障转储。在故障转储的情况下,路径信息可能会丢失(例如,如果转储是使用 .dump/marR 创建的)。如果是这种情况,您需要指定可执行路径。
在第 3 步中,您说您已将图像路径和符号路径设置为 D:\test。但是,该命令的输出看起来不像典型的 .sympath 输出。它应该看起来像这样:
0:022> .sympath d:\test
Symbol search path is: d:\test
Expanded Symbol search path is: d:\test
接下来你说你也指定了图片路径,但是你还没有显示.exepath的输出:
0:022> .exepath d:\test
Executable image search path is: d:\test
Expanded Executable image search path is: d:\test
如果您没有指定图像路径,我不确定 WinDbg 是否会在符号路径中查找 DLL。在这一点上,我会说你有两个选择:
.exepath.reload/f D:\test\A.dll一个问题可能是 WinDbg 使用的模块名称与 DLL 名称不匹配。该名称可以例如是 image01000 或类似的。如果名称不像 A.dll 那样简单并且包含特殊字符,则这些字符可能会被替换,例如如果是 Notepad++:
0:007> lm m note*
start end module name
00400000 005f5000 notepad__ (deferred)
要查看 DLL 名称,请使用 lmf:
0:007> lmf m note*
start end module name
00400000 005f5000 notepad__ C:\Program Files (x86)\Notepad++\notepad++.exe
如果您不信任 WinDbg 关于匹配或不匹配符号,您还可以在 WinDbg 外部验证 PDB 文件是否与 DLL 匹配。
检查您是否有私有(private)符号:
Symchk /if <dll> /s <pdbdir> /av /od /pf
检查您是否有公共(public)符号:
Symchk /if <dll> /s <pdbdir> /av /od /ps
下载ChkMatch并执行
ChkMatch -c <dll> <pdb>
关于c++ - WinDbg 说在图像列表中找不到 ".dll",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100851/
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL