65.9K
CodeProject 正在变化。 阅读更多。
Home

zTrace 调试实用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.55/5 (13投票s)

2013年12月6日

CPOL

3分钟阅读

viewsIcon

22769

downloadIcon

423

这是一个 VS2010+ 项目

介绍  

zTrace 是一个小型 DLL 实用程序,用于将调试信息显示到弹出窗口工具和/或文本文件中。
它使用一个单独的线程与要调试的当前应用程序并行工作。

背景

zTrace 在开发时非常有用,可以检查程序是否运行正常。
它基于 WinDev 的 Trace API 建模,原始 Win32 版本是用 PowerBASIC 编写的。

我最初编写 zTrace 是为了调试我的插件图形 DLL 工具,但它也适用于任何 32 位或 64 位 EXE。
当我决定将 WinLIFT 和 GDImage 转换为 C++ 时,这是我的首选,因为没有它我就无法再进行开发。

使用代码

zTrace 专门使用底层 API,这是我使用的所有语言的唯一共同点,也是摆脱额外依赖项的唯一方法。
源代码以纯 SDK 编码风格提供,就像 Charles Petzold 第 5 版(SDK 编码圣经)中记录的那样。

zTrace 基于 UNICODE。

使用语法
zTrace(L"宽字符串信息")

一个包含要在跟踪窗口中显示的信息的 wstring。

参数详情

跟踪窗口
• 作为参数传递的信息显示在 zTrace 窗口的下一行。
• 默认情况下,当调用 zTrace 时会自动打开跟踪窗口,此窗口打开在屏幕的左上角。
• 当您关闭正在调试的应用程序时,zTrace 窗口会自动关闭。

zDebug.txt 报告
• 工作方式与 zTrace 窗口完全相同,只是信息写入文本文件。
• 该报告在调用 zDebug 时自动创建,并保存在与调试应用程序相同的文件夹中。
• zDebug 可以单独使用,也可以与 zTrace 结合使用(当弹出菜单中选中该选项时)。
• 当调试的应用程序意外关闭或应用程序的生命周期较短时,zDebug 非常方便,这不会给您足够的时间来阅读 zTrace 窗口中写入的内容。
• 每次开始新的 zDebug 会话时,都会创建一个新的 zDebug.txt。

上下文弹出菜单(鼠标右键单击跟踪窗口)
• 使用水平滚动条,显示或隐藏水平滚动条。
• 将选择发送到打印机,打印选定的行(如果没有选择则打印整个列表)。
• 将选择复制到剪贴板,将选定的行(如果没有选择则打印整个列表)复制到剪贴板。
• 清除内容,清除跟踪窗口的内容。
• 跟踪窗口置顶,在所有其他窗口(包括来自其他应用程序的窗口)之上打开跟踪窗口。
• 创建 zDebug.txt 报告,zDebug.txt 报告在调试应用程序的文件夹中创建。
• 保存窗口坐标,关闭时将 zTrace 窗口的大小和位置存储到注册表中。下次显示窗口时将使用以前的大小和位置。

屏幕截图 

辅助函数

这是放入代码中使用的辅助函数,可以使用 zTrace32.dllzTrace64.dll

#define long_proc typedef long (__stdcall *zProc)
 
long zTrace (IN wstring sPtr) {
    long nRet = 0;
    static HMODULE hDll;
    if (hDll == 0) { 
        if (sizeof(LONG_PTR) == 8 ) {
            hDll = LoadLibrary(L"zTrace64"); }
        else {
            hDll = LoadLibrary(L"zTrace32");
        }
    }
    if (hDll) {
        long_proc (WCHAR*);
        zProc hProc = (zProc) GetProcAddress(hDll, "zTrace");
        if (hProc) { nRet = hProc((WCHAR*) sPtr.c_str()); }
    }
    return nRet;
}   
如果由于任何原因 ZIP 文件从此帖子中丢失,您可以在此处下载该项目的完整 VS2010 源代码。

SDK 编程

我是一名底层 Windows SDK 程序员,编写图形插件和多媒体应用程序。
您可以在此处了解更多关于我的工作的信息,并下载几个 C++ 演示项目。

注意:在同一链接上,您会找到 Exif 项目,该项目使用 zTrace 来显示来自 jpeg 图像文件的数据(使用 GDImage.dll)。

历史  

这是 2.01 版本,发布于 2013 年 12 月 5 日。

© . All rights reserved.