vs2010调试如何查看DataTable内的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2010调试如何查看DataTable内的数据?相关的知识,希望对你有一定的参考价值。

在DataTable赋值后下断,调试,断下来后反鼠标移到要看的对象上,有个放大镜,点下就看到了 参考技术A 那个DataTable处设置一个断点 。
1鼠标移到DataTable上就可以看到
2 监视窗口
3 即使窗口
4调用堆栈 窗口 中输入 DataTable 实例名也可以看到。
参考技术B 在那里设置断点啊,然后开启监视,监视你要看的 datatable的数据

在 VS2013 中调试时如何查看 CIL 堆栈?

【中文标题】在 VS2013 中调试时如何查看 CIL 堆栈?【英文标题】:How do I view the CIL stack while debugging in VS2013? 【发布时间】:2014-09-25 22:11:18 【问题描述】:

我有一个用 ildasm 反汇编的 .NET 程序。然后我使用 /debug 标志使用 ilasm 重新编译它,以创建一个链接到 .il 文件的 .pdb。一切正常,我现在可以在 Visual Studio 2013 Professional 中调试该程序,并在各个指令上设置断点,然后逐个执行它们。能够单步执行说明非常棒,但我不知道如何查看他们正在操作的堆栈,所以我所能做的只是单步执行说明,而不知道他们正在处理什么数据.如何查看堆栈中的对象?

【问题讨论】:

【参考方案1】:

这是不可能的。 CIL 是针对虚拟机的指令,您的机器不是虚拟的。当你的程序运行时,CIL 指令总是被翻译成机器代码,这是 Just In Time 编译器的工作(又名 jitter)。机器代码是处理器执行的实际指令。 CIL 是语言编译器和执行程序的实际机器之间的一个很好的抽象,这就是 AnyCPU 可以成为您项目的平台目标的原因。不同的处理器有不同的抖动。

您只能查看执行的真实指令,Debug + Windows + Disassembly。需要对汇编代码有一定的了解。你只能查看真正的堆栈,Debug + Windows + Call Stack 用于方法,Debug + Windows + Locals 用于方法参数和局部变量。很容易理解。

您可能应该知道的另一个细节是,您在反汇编窗口中查看的机器代码并不是将在用户机器上执行的代码。抖动有一个内置的优化器,它会做额外的工作来尝试使机器代码尽可能高效。该优化器在 Debug 构建中和/或当您连接了调试器时关闭。使调试程序变得更加容易。如果您想查看 real 代码,则必须调试 Release 构建并更改选项。工具 + 选项,调试,常规,取消勾选“在模块加载时抑制 JIT 优化”选项。优化的代码可能与 CIL 严重不匹配,并且当内联方法、重新排列语句和消除变量时,这些调试窗口会变得很有趣。

【讨论】:

据我所知,这是可能的:***.com/questions/13026449/…(我听说它也可能与windbg 和扩展一起使用)问题只是让它在VS2013 中工作。我完全知道 CIL 在虚拟机上运行并且堆栈实际上并不存在,但归根结底它必须实际上存在于某个地方,否则显然 CIL 将无法工作。 问和答,你在 VS 中无法获得这种观点。如果您想要类似于您在该问题中看到的内容,那么我想您将不得不使用 MDbg。不确定,它不是一个常见的调试工具,它是作为程序员实现自己的托管调试器的示例。它当然不能在该视图中调试优化代码,因为 CIL 和机器代码之间不再存在一对一的关联。

以上是关于vs2010调试如何查看DataTable内的数据?的主要内容,如果未能解决你的问题,请参考以下文章

vs2010 如何查看内存内容

vs2010调试怎么查看变量

VS 2010 调试 C#代码中的 datatable 或 dataset 报错 System.Exception: 函数计算超时。

请问VS2010中,如何查看调试过程中函数的返回值?

自定义调试工具

vs2010查看内存地址的方法