如何在VC中使用DEBUG

原创 2001年11月09日 14:50:00

 

在VC中使用Debug

  1. 选定Debug编译选项
    Build -> Set Active Configuration -> Win32 Debug
    或者在Build工具栏上的ListBox中选择Debug。
    Debug定义了_DEBUG宏,而Release定义了NDEBUG宏。
  2. 先按F12编译Browse信息
    这样编译后可以查到变量定义。 
  3. 执行Debug
    按F5(注意,如果按Ctrl+F5 是Run,起不到Debug的作用)。
    在Debug时一定要把Debug工具栏拉出来,方便调试。
  4. Breakpoints(F9)
    用Alt+F9可以对所有的断点进行编辑。

    对指令地址(EIP)指定断点
    当EIP的值为指定值时中断。如下图:是对SetWindowLong的地址进行设置的(注意:一定要在前面加0x)。




    对内存地址设置断点
    当指定内存地址发生变化时中断(在运行时设置才管用)。

  5. Show Next Statement(Alt+Num *)
    显示当前指令所处的代码位置
  6. Step Over(F10)
    单步追踪,遇到Call语句不进入
  7. Step Into(F11)
    单步追踪,遇到Call语句进入
  8. Step Out(Shift+F11)
    跳出当前函数调用
  9. Run to Cursor(Ctrl+F10)
    运行到光标所处位置
  10. Memory Leaks
    内存泄漏。要想检查到memory leaks,必须包含<afx.h>头文件(实际上是#pragma comment(lib, "mfc42ud.lib")在起作用)。
    注意:内存泄漏是一个十分严重的问题,尤其对于需要长时间运行的程序(进程长时间保留在内存中)更是如此。有一个重要的事实是,当进程正常退出时,操作系统负责清空该进程的所有内存。
  11. QuickWatch(Shift+F9)
    可以更改变量运行时的值。
  12. Watch窗口
    输入"err,hr"可以动态查看GetLastError信息。可以输入寄存器。
    (long *)ESP可以查看堆栈内容。 
  13. Variables窗口
    当前函数的局部变量
  14. Registers窗口
    EIP、ESP、ECX

  15. Memory窗口
    对变量可以拖放。Options->Debug中可以设置

  16. Call Stack窗口


  17. Disassembly窗口
    Set next statement 跳过某些语句(有时用于Hack)

    Goto Source

    Ctrl+G

    在%system%目录下创建de.bat文件,内容如下:
    dumpbin /exports %1>a.txt
    a.txt
    对dll输出函数进行查看

    Apply Code Changes(Alt+F10)
    当处于Debugging状态时,如果更改了代码,可以执行此命令,可以使得重新编译后再运行到当前状态。

  18. Debug->Modules窗口


  19. Profile(Build菜单下)
    要先设置Project -> Settings -> Link -> Enable profiling

  20. ASSERT,VERIFY
  21. TRACE
    在Debug状态下输出,同时要求Enable tracing开启。

  22. AfxMessageBox
  23. cout,printf
    对控制台程序进行输出测试

  24. OutputDebugString
    在Debug和Release状态下都可以输出。

  25. DebugBreak,_asm{int 3}
    强制中断

  26. 如何对Release版本进行Debug
    进行如下设置,然后就可以进行Debug了。

    Settings -> C/C++ -> Category(General) -> Debug info=Program Database 
    Settings -> Link -> Category(General) -> Generate debug info=true 
  27. 输出汇编文件
    Project Settings中如下设置:


     则会产生相应的汇编文件 (*.asm / *.cod)

  28. 在Win32程序中输出字符串到控制台
    if (AllocConsole())
    {
    HANDLE hConsole;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    if (hConsole)
    {
    DWORD dwWritten;
    char sOut[]="This is a test string./n";
    WriteConsole(hConsole, sOut, strlen(sOut), &dwWritten, NULL);
    }
    }
    //FreeConsole();

在VC中使用Debug

在VC中使用Debug选定Debug编译选项Build -> Set Active Configuration -> Win32 Debug或者在Build工具栏上的ListBox中选择Debug。D...

如何使用VC++调试程序 Debug版本与Release版本

1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optim...
  • Sayesan
  • Sayesan
  • 2014年07月04日 16:32
  • 518

vc debug版本详解0812

  • 2008年12月21日 01:38
  • 131KB
  • 下载

VC Debug 和 Release的区别

  • 2009年07月12日 12:51
  • 77KB
  • 下载

VC6.0 编译生成Release或Debug版本

可以project->Set Active Config,选中release版本。此后,按F5或F7编译所得的结果就是release版本。 ---------------------------...

在vc的cpp头部加入#define new DEBUG_NEW的作用

在vc的cpp头部加入#define new DEBUG_NEW的作用 这里多说一句作为一名程序员遇到问题一定要研究透彻。见如下代码 #ifdef _DEBUG #define ...
  • tz2101
  • tz2101
  • 2014年02月25日 13:31
  • 610

VC2008_MFC_CRT_DEBUG_RELEASE_amd64

  • 2014年06月10日 13:20
  • 11.5MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在VC中使用DEBUG
举报原因:
原因补充:

(最多只允许输入30个字)