msdn之调试杂项
来源:互联网 发布:mac 下载不在dock 编辑:程序博客网 时间:2024/05/17 22:51
问题描述
我认为我的一个指针可能损坏了地址 0x00408000 处的内存。如何查明该地址处所发生的情况?
解决方案
检查堆损坏
大多数内存损坏实际上是由堆损坏引起的。尝试使用 Global Flags Utility (gflags.exe) 或 pageheap.exe。请参见http://support.microsoft.com/default.aspx?scid=kb;en-us;286470。
若要查找内存地址改变的位置
在 0x00408000 处设置一个数据断点。有关更多信息,请参见如何:设置数据断点(仅限本机)。
当命中断点时,使用“内存”窗口查看从 0x00408000 开始的内存内容。有关更多信息,请参见“内存”窗口。
问题描述
我认为我的一个指针可能损坏了地址 0x00408000 处的内存。如何查明该地址处所发生的情况?
解决方案
检查堆损坏
大多数内存损坏实际上是由堆损坏引起的。尝试使用 Global Flags Utility (gflags.exe) 或 pageheap.exe。请参见http://support.microsoft.com/default.aspx?scid=kb;en-us;286470。
若要查找内存地址改变的位置
在 0x00408000 处设置一个数据断点。有关更多信息,请参见如何:设置数据断点(仅限本机)。
当命中断点时,使用“内存”窗口查看从 0x00408000 开始的内存内容。有关更多信息,请参见“内存”窗口。
问题描述
给我的某个函数传递的是错误的参数值。很多地方都在调用该函数。如何查明是谁在传递错误值?
解决方案
解决此问题
在函数的开始处设置一个位置断点。
右击该断点并选择“条件”。
在“断点条件”对话框中,单击“条件”复选框。有关更多信息,请参见如何:指定断点条件。
在文本框中输入一个表达式(例如 Var==3),此处 Var 是包含错误值的参数的名称,3 是传给此参数的错误值。
选择“为真”单选按钮,单击“确定”按钮。
现在再次运行程序。当 Var 参数的值为 3 时,断点导致程序在函数开始处暂停。
然后可以使用“调用堆栈”窗口查找调用函数并定位到其源代码。有关更多信息,请参见如何:使用“调用堆栈”窗口。
问题描述
程序在调用某函数(如 CnvtV)时失败。失败以前该程序可能已调用了该函数数百次。如果我在 CnvtV 上设置一个位置断点,程序在每次调用该函数时都停止,而我不希望这样。我不知道什么条件导致调用失败,所以无法设置条件断点。我该怎么办?
解决方案
在函数上设置断点时可以将“命中次数”字段设置为一个大到永远无法达到的值。在这种情况中,由于您确信函数 CnvtV 被调用了数百次,所以将“命中次数”设置为 1000 或更高。然后运行程序,等待调用失败。程序失败后,打开“断点”窗口并查看断点列表。将显示您在 CnvtV 上设置的断点,其后跟着命中次数和剩余迭代次数:
CnvtV(int) (no condition) when hit count is equal to 1000 (currently 101)
现在您知道函数在第 101 次调用时失败。如果重置断点,将命中次数设置为 101,然后再次运行程序,程序将在导致 CnvtV 调用失败的位置停止所有 CnvtV 调用。
问题描述
在哪里可以查看win32错误代码解决方案
默认系统安装的 INCLUDE 目录中的 WINERROR.H 包含 Win32 API 函数的错误代码定义。
可以通过在“监视”窗口或“快速监视”对话框中键入错误代码来查阅该代码。例如:
0x80000004,hr
问题描述
我的程序存在窗口激活问题。用调试器逐句通过程序时,因为程序不断失去焦点,所以妨碍了再现问题。是否有方法可以避免该问题?
解决方案
如果有另一台计算机,请使用远程调试。可以在远程计算机上运行您的程序,而在主机上运行调试器。有关更多信息,请参见如何:选择远程计算机。
问题描述
如何调试win32api?解决方案
如果要调试加载了 NT 符号的 Windows API 函数,需要执行以下步骤。
若要在加载了 NT 符号的 Windows API 函数中设置断点
输入函数名的修饰格式以及函数所在的 DLL 的名称。例如,若要在 MessageBeep 上设置断点,必须输入:
{,,USER32.DLL}_MessageBeep@4
可以从使用 /MAP 创建的映射文件中获得修饰名。
- msdn之调试杂项
- msdn之CRT调试
- msdn之dll调试
- Wince驱动调试杂项
- eclipse调试杂项
- 学习笔记之每日杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 杂项
- 大话设计模式-单例模式
- 《高级Bash脚本编程指南》之基本实例讲解
- make menuconfig出现问题
- Cookie
- uva_10025 - The ? 1 ? 2 ? ... ? n = k problem
- msdn之调试杂项
- 再次温习下C\C++的内存分配
- asp.net 单窗体模型
- [leetcode] Max Points on a Line
- object-c 学习总结2
- 黑马程序员---了解开发工具及内部类
- [leetcode] Reorder List
- Android开发工具ADT关联源码与API文档
- go, Getting Started, Hello world