csharp组装问题 [英] csharp Diassembly problem

查看:85
本文介绍了csharp组装问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我在调试时遇到问题.我在某些地方放置了断点以跟踪代码.但是在按下F11键并达到它的功能时,一个新的叫做disassemby的窗口出现了,并且显示了这样的东西.我正在粘贴那里显示的内容



00000000推ebp
00000001 mov ebp,esp
00000003推edi
00000004 push esi
00000005推ebx
00000006 sub esp,44h
00000009 xor eax,eax
0000000b mov dword ptr [ebp-10h],eax
0000000e xor eax,eax
00000010 mov dword ptr [ebp-1Ch],eax
00000013 mov dword ptr [ebp-3Ch],ecx
00000016 mov dword ptr [ebp-40h],edx
00000019 cmp dword ptr ds:[08B01FC0h],0
00000020 je 00000027
00000022致电70E465B7
00000027 xor edx,edx





因此,我无法跟踪实际的代码,我关闭了aap,然后再次打开它,然后重新启动了机器,但没有任何效果.

因此,如果有人知道如何摆脱这种情况.请帮助我





预先表示感谢.

解决方案

通常,调试器将逐步浏览幕后的(本机)汇编代码.

对于精通汇编代码的人来说,这没什么大不了的-对于我们其他人来说,这是一个巨大的障碍...

为了简化调试,在编译时会生成其他信息,以将汇编代码行与源代码行相关联.这允许从组装流水线获得生成该组装代码的相应源代码线.

我假设您在某些版本的Microsoft Visual Studio中工作.
对于Visual Studio调试器,此交叉引用信息存储在所谓的PDB文件中.
您的调试会话现在显然不知道从何处获取关联的PDB文件.

如果是您的代码,请检查生成选项以生成te pdb文件.
如果是第三方代码,请检查是否有可用的PDB文件,并在调试选项中进行引用.

如果您遇到了汇编代码,则可以通过Shift-F11从所使用的函数中跳出.

干杯

Andi


检查此博客
http://madgeek.com/Articles/Leaks/Leaks.en.html [ ^ ]
--NDK


这似乎是x86汇编代码,所以最好的猜测是您在本机函数而不是.NET函数上使用了F11(或单步执行). br/>
尝试改用F10(逐步操作)-如果它是本机函数,则源极有可能不可用,因此VS会通过反汇编来尽其所能.


hi
i am facing a problem while debugging . I have put break points in some place to trace the code . But while pressing the F11 key and when it reach that function , a new window called disassemby is coming and showing something like this . i am pasting what is showing there



00000000 push ebp
00000001 mov ebp,esp
00000003 push edi
00000004 push esi
00000005 push ebx
00000006 sub esp,44h
00000009 xor eax,eax
0000000b mov dword ptr [ebp-10h],eax
0000000e xor eax,eax
00000010 mov dword ptr [ebp-1Ch],eax
00000013 mov dword ptr [ebp-3Ch],ecx
00000016 mov dword ptr [ebp-40h],edx
00000019 cmp dword ptr ds:[08B01FC0h],0
00000020 je 00000027
00000022 call 70E465B7
00000027 xor edx,edx





So i couldnot trace the actual code ,i closed the apliation and opened it again and i restarted the machine ,but no effect.

So if anybody knows how to get out of this situation . please help me





thanks in advance

解决方案

In general, the debugger steps through the (native) assembly code behind the scene.

For people fluent in reading assembly code, this is no big deal - for the rest of us this is a monumental obstacle...

To ease debugging, there is additional information generated while compiling to associate assembly code lines with source code lines. This allows to get from an assembly line the respective source code line that generated that assembly code.

I assume you work in some version of Microsoft Visual Studio.
In the case of Visual Studio debugger, this cross-reference information is stored in the so called PDB file.

Your debugging session now obviously does not know, where to take the associated PDB file from.

If it''s your code, check the build options to generate te pdb file.
If it''s 3rd party code, check if there are PDB files available and refer to them in the debugging option.

If you end up in an assembly code, you may jump out by Shift-F11 from the function you went into.

Cheers

Andi


check this blog
http://madgeek.com/Articles/Leaks/Leaks.en.html[^]
--NDK


That looks to be x86 assembly code, so the best guess is that you have used F11 (or step-into) on a native function rather than a .NET function.

Try using F10 (step over) instead - if it is a native function, then the source will most likely not be available, so VS is doing the best it can by disassembling it.


这篇关于csharp组装问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆