一、DebugView端游日志查看工具

端游开发人员可以借助 DebugView- Windows Sysinternals| Microsoft Docs工具来查看游戏打印的log。该工具能够监控本地系统上的debug print,并可通过TCP/IP访问网络上的任意计算机。它支持同时显示内核模式和Win32调试输出,无需调试器即可捕获应用程序或设备驱动程序产生的调试输出,也不需要修改应用程序或驱动程序来使用非标准调试输出 API。

我所使用的版本为 DebugView 4.9(发布于2019年4月23日),操作系统为 win10 pro x64。我将使用它来查看x64端游的日志。

debugview,你知道怎么使用DebugView查看调试信息吗

接下来,我将重点介绍一些 DbgView的其他功能。

打开 DbgView,在菜单栏中选择 Computer—— Connect Local,稍等片刻,你就可以在列表中看到日志刷新出来了。

在工具栏中,点击 Filter/Highlight(Ctrl+L),在 Exclude输入:FileSystemOpTrack:,然后点击 OK。

在工具栏中点击时钟图标,将显示格式设置为20:01这样的格式,而不是时间戳。

在高度下方添加进程pid,如下图所示。

debugview,你知道怎么使用DebugView查看调试信息吗

但实际使用中,感觉这个进程过滤功能不太好用。

与安卓adb相比,手游开发者肯定使用过 android sdk提供的 adb,它可以精确地查看某个 pkg输出的 log。

对于初次使用 DbgView的我来说,不知道如何设置只查看某个游戏的日志,因为 DbgView会打印出系统中所有程序的 print。

DbgView++(增强版)最强大的功能是可以过滤特定进程的日志,我使用下来感觉过滤效果比 DbgView好用。

开源地址: CobaltFusion/DebugViewPP: DebugView++, collects, views, filters your application logs, and highlights information that is important to you!

官方主页: DebugView++, a Windows Debug Message Viewer| A topnotch WordPress.com site

参考资料:利用DebugView调试Windows程序-简书(jianshu.com)

二、DebugView 的介绍和消息过滤

DebugView是一款功能强大的信息捕获工具,能够捕捉在 Debug和 Release模式下由 TRACE和 OutputDebugString输出的调试信息。尽管在集成开发环境(如 VS)中直接运行程序时,DebugView无法捕获信息,因为输出已被控制台捕获。因此,应运行 Debug或 Release版本的程序以捕捉信息。

DebugView还支持内核程序的捕获,并且提供自定义过滤条件,让你仅关注感兴趣的输出信息。此外,还可以设置高亮显示的内容,极大提高了信息查看的便捷性。

为了捕捉 Release模式下的 Win32程序输出的调试信息,只需选择“Capture Global Win32”选项。捕获信息时,只应调用 WinDebug中的方法以确保 DebugView能够捕获到调试打印信息。在需要远程捕获时,需在服务器上创建 dbgview.exe程序的快捷方式,并在“目标”后添加特定参数,运行该快捷方式后,服务器将处于等待连接状态。在本地使用 DebugView连接服务器即可捕获调试信息。

在程序中打印信息至 DebugView的方法多样:使用 Qt工程的 qDebug()函数或直接调用 OutputDebugStringA方法。System.Diagnostics.Debug.Write方法仅适用于在 debug模式下编译的 exe,而其他两种方法适用于 debug和 release模式编译的 exe。在 DebugView中,可以通过点击“小酒杯”图标设置过滤信息,通过设置关键字来查看或排除特定信息,并且可以使用红色输入框输入关键字以对匹配结果进行高亮显示。

DebugView还提供了多种快捷键功能,如 Ctrl+ x清屏、Ctrl+ A打印信息自动滚动等。在 Win7下,若无法捕获信息,可通过打开注册表设置 [Debug Print Filter]键值为 0x0f来解决。此外,DebugView还提供了高级功能,如高亮指定进程、查找并高亮指定文字,以及手动设置过滤条件等。

DebugView的官方下载地址为 DebugView- Windows Sysinternals。对于远程调试的方法,有专门的教程讲解,例如 DebugView调试入门_衣舞晨风的博客-CSDN博客和 DebugView使用技巧_擒贼先擒王的博客-CSDN博客,这些资源提供了更详细的讲解和使用技巧。

三、你知道怎么使用DebugView查看调试信息吗

DebugView,sysinternals工具集中的调试信息查看神器,无论内核或应用程序开发人员都能得心应手。接下来,我们将探索如何使用它输出和捕获调试信息,以及遇到问题时的排查和解决方法。

首先,无论是C++还是C#程序,都能通过相关API生成调试信息,DebugView能轻松捕获这些信息,如以下截图所示。

DebugView具备众多实用功能,包括但不限于:查看输出的调试信息,视频教程让你更直观地了解。如果遇到无法捕获信息,可能是Vista后需要设置注册表权限,可通过下载Debug Print Filter.reg文件进行配置,具体如注册表内容所示。

遇到Dbgv.sys占用问题时,可以借助Process Monitor监控文件操作,但查找占用进程可能需要其他工具。重命名Dbgv.sys的临时解决方案在某些老版本中有效,建议使用最新版本DebugView以避免此类问题。

深入理解OutputDebugString()的实现原理,可以参考张银奎老师的《软件调试》(第二版)。这本调试领域的经典之作,值得深入研读。张老师的公众号和微信公众号也是关注调试的朋友不可错过的资源。