1.微软推出了新的微软开源错误发现工具ProjectOneFuzz
2.cè¯è¨å¦ä½è°è¯
3.DEBUG命令
4.笔记UE5 Shader 调试工具 - Microsoft PIX
5.WinDbg实践--入门篇
微软推出了新的开源错误发现工具ProjectOneFuzz
今天早些时候,Microsoft 更新了Visual Studio Code的源码C ++扩展,将其扩展到了1.0版。调试源代码编辑器是微软在标准MIT许可下可在GitHub上获得的几种Microsoft产品之一。
今天,源码该技术巨头已经在相同的调试输出源码有哪几类许可下发布了一个新的开源工具-OneFuzz项目。该新平台将替代Microsoft已停产的微软安全风险检测服务,该平台被称为“ Azure的源码开源自托管开发人员测试平台”。
模糊测试本质上是调试通过严格的测试过程来消除可利用的安全漏洞,该过程涉及用大量随机数据泛滥相关程序。微软尽管非常有用,源码但执行起来也常常很复杂。调试OneFuzz项目试图利用开源LLVM编译器基础结构项目的微软最新进展,使模糊测试变得更轻松,源码更连续。调试
由于上述进步,以前必须连接到连续构建系统的相关机制现在可以直接烘焙到其中。例如,崩溃检测可以通过asan工具内置,而覆盖范围跟踪可以使用SanitizerCoverage(sancov)工具进行烘焙。大话小马辅助源码展望未来,这些更改将使在单个可执行文件中内置多种模糊测试技术,从而可以开发单元测试二进制文件。
然后,Project OneFuzz允许将这些测试二进制文件构建到CI / CD管道和云中的大规模Fuzz工作流程中。该工具的突出功能包括:
可组合的模糊测试工作流程:开放源代码允许用户使用自己的模糊测试工具,交换仪器和管理种子输入。
内置的集成模糊测试:默认情况下,模糊测试器作为一个团队来共享优势,在模糊测试技术之间交换感兴趣的输入。
程序分类和结果重复数据删除:它提供了始终重复的独特缺陷案例。
按需实时发现已崩溃的调试:它使您可以按需或从构建系统中调用实时调试会话。
可观察和可调试:透明的设计允许自省每个阶段。
Windows和Linux操作系统上的模糊性:设计成多平台。使用您自己的OS构建,内核或嵌套的管理程序进行模糊测试。
崩溃报告通知回调:当前支持Azure DevOps工作项和Microsoft Teams消息
该测试框架已在包括Microsoft Edge和Windows在内的其他Microsoft服务和平台中使用。现在,随着OneFuzz项目的拍卖源码免费下载可用性扩展到全世界的开发人员,可以在GitHub上访问它。微软欢迎开源社区的贡献,该公司承诺将来会对该工具进行将来的更新。
cè¯è¨å¦ä½è°è¯
ç®åæ¥è¯´ï¼æ两ç§æ¹å¼:ä¸ç§æ¯æºç debugï¼å³åææºç æ¥æ¾åºbugä½ç½®ï¼ä¸è¬ä½¿ç¨printf()æå°åºç¨åºæ§è¡æ¯ä¸æ¥çä¿¡æ¯;
ä¸ç§æ¯å¯æ§è¡æ件debugï¼éè¦ä½¿ç¨è°è¯å¨æ¥è¿è¡ã
1ãæºç debug
类似äºä¸é¢çæºç ï¼ä¸»è¦éè¿ç¨åºæ§è¡æ¶è¾åºçä¿¡æ¯ï¼æ¥å®ä½bugåºç°çä½ç½®ï¼ç¶ååä¿®æ¹æºç ã
#include <stdio.h>
void f() { ; }
int main()
{
#ifdef _DEBUG
printf("start main function!\n");
#endif
void f();
#ifdef _DEBUG
printf("leave main function !\n");
#endif
return 0;
}
2ãå¯æ§è¡æ件è°è¯ï¼windowså¹³å°å¸¸ç¨çå°±æ¯vs/vcèªå¸¦çè°è¯ï¼å¦å¤ä¸ä¸ªå°±æ¯å¾®è½¯èªå®¶å¼åçè°è¯å¨windbgãLinuxå¹³å°ä»¥gdb为常ç¨ã
IDEèªå¸¦çè°è¯å¨ä»¥VC6.0为ä¾ï¼ç¼åå®ä»£ç åï¼æå¿«æªé®çFï¼å³å¯è¿å ¥è°è¯ï¼æ¤æ¶å³é®ï¼éæ©âgo to disassembly"å³å¯æ¥çå°ç¨åºçåæ±ç¼ä»£ç ãä¸è¬è¿ç§æ åµï¼ä¸»è¦æ¯ä¸ºäºå¯¹Cè¯è¨è¿è¡åæ±ç¼å¦ä¹ ã
Windbgçåè½é常å¤ï¼å¯ä»¥è¿è¡æºç è°è¯ãå¯ä»¥è°è¯å¯æ§è¡æ件ãè¿å¯ä»¥è¿è¡å æ ¸è°è¯ï¼ä¹å¯ä»¥è°è¯dumpæ件ï¼ç¨çå¤äºï¼èªç¶çæï¼è¦è°è¯å¯æ§è¡æ件ï¼åªéè¦ç¹å»âFile"å¨å¼¹åºç对è¯æ¡ä¸éæ©âOpen Executeable"ï¼ç¶åæ¾å°èªå·±è¦è°è¯çç¨åºå³å¯ã
Linux常ç¨çæ¯Gdbè°è¯å¨ï¼å¼å¾æ³¨æçæ¯ï¼è¦ä½¿ç¨gdbè°è¯ï¼å¨ä½¿ç¨gccæè g++ç¼è¯C/c++æ件æ¶ï¼éè¦æ·»å -gåæ°æå¯ä»¥çæ符å·è¡¨ãä¸å¾æ¯ç¨gdbåæC++ä¸åéåå¸çä¸å¼ æªå¾ï¼å¤§ä½ä¸çä¸ä¸é¿ä»ä¹æ ·ï¼ç¨çå¤äºèªç¶çæï¼ä¸éè¦å¯ä»¥å»å¦ä¹ ã
DEBUG命令
在路由器中,DEBUG命令是一种强大的工具,用于获取交换的报文和帧的详细信息,用于调试网络问题。它并非常规的网络运行监控手段,而是专为解决特定问题而设计,应在网络负载较低时使用,避免对正常网络运行造成干扰。 使用DEBUG命令时,需谨慎操作,避免使用全局的如"debugging all"这样的命令,因为这可能会过度监控,影响性能。一旦开始使用,务必在完成调试后立即使用"undo debugging"命令终止调试,以防止不必要的快三源码天恒资源消耗。 “Debugger”一词在技术语境中,虽然字面意思是消除系统中的问题,但实际上,它更多是指帮助我们调试的工具,而非自动解决问题的工具。在调试过程中,我们借助Debugger监控和控制“Debug对象”的状态,以发现和解决问题,如查看对象状态、控制其运行,从而获取解决问题所需的关键信息。 调试工作可能需要软件和硬件的协同,通过监控“Debug对象”,我们可以了解其动态特征,进一步理解其内部结构。国内有一本详尽的著作《软件调试》可供深入研究。例如,微软的WinDbg就是一个强大的源码级调试工具,适用于Kernel和User模式,scala 2.12.4 的源码以及对Dump文件的调试。 DEBUG命令本身包含了一系列详细的子命令,如汇编、比较内存、显示内存内容等,每种子命令都有其特定的功能,如查看、输入、输出等。在使用时,需正确指定有效地址和范围,以确保命令的准确执行。扩展资料
为马克1号编制程序的是一位女数学家雷斯。霍波,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。笔记UE5 Shader 调试工具 - Microsoft PIX
为了有效地调试使用DX的着色器,开发者通常需要一个高效且可靠的工具,微软的PIX调试工具就是这样一个理想的选择。与RenderDoc相比,PIX能够提供更全面、准确的调试信息,具体包括:
- 强大的性能分析和回放功能
- 显示着色器符号,方便调试源代码
- 精确的渲染时间duration值
在开始之前,需要确保你的渲染引擎使用的是DX RHI(渲染硬件接口),这是成功使用PIX的基础。为了避免插件冲突导致的崩溃,必须先禁用RenderDoc插件,确保PIX插件被正确配置。
在配置文件ConsoleVariables.ini中,调整Shader编译相关设置,为接入PIX打下良好的基础。
按下PrintScreen或F键进行截帧操作,观察系统提示完成截图。在不同系统下,可能需要调整快捷键以避免与系统功能冲突。
利用PIX附着到Unreal的进程,同时开启Analysis模式,确保进行开发者模式设置,以获取详尽的调试信息。
在打开的游戏或编辑器中,截帧后进行分析,选择需要调试的DrawCall和具体Shader资源,以深入了解渲染管线的工作过程。深色主题的视觉体验虽然酷炫,但在读取代码时可能不够清晰,因此,调整主题到更利于阅读的白底配色。
记得检查在编译设置中已启用Shader符号信息,以获取额外的调试支持。当启用Shader符号信息时,确保编译选项中不包含某些不必要的优化标志。
Pix目前不支持调试DX或Vulkan,但这并不意味着它不是一个强大的调试工具,其在DX上的功能强大且实用。
最后,深入理解和应用DirectX 管道中的关键概念,如Pipeline State、Root Signature、Input Assembler、Vertex Shader和Pixel Shader以及Output Merger,对优化和调试有着重要影响。它们共同构成了渲染流程的核心,理解它们将帮助你在开发过程中更加得心应手。
要深入使用这些知识和工具,参考微软官方文档和教程,比如微软的GPU捕获、Pix下载指南、如何将开发者设备配置为启用Pix、如何职业游戏开发者使用Pix提高在Xbox和Windows上的游戏质量等相关文章。
这便是PIX为DirectX 着色器调试提供的全面支持和深究其功能以优化性能的过程概览,希望对你的开发旅程有所帮助。
WinDbg实践--入门篇
WinDbg,即Windows平台上的调试工具,它由Windows和Debug两个词组合而成,具备强大的调试功能,能够调试用户模式、内核模式以及dump文件等。其调试命令分为基本命令、元命令和扩展命令三类。基本命令和元命令是调试器自带的功能,元命令以"."开头,而扩展命令则以"!"开头。以下将通过实例和命令来实践WinDbg的使用。
一.配置微软符号服务器[未能成功]
在Windows程序中,通常会存在与XXX.exe相同名字的XXX.pdb文件,即Program Debug Database。pdb文件包含调试信息,由链接器生成。符号服务器(Symbol Server)是一个文件服务器,将调试符号进行集中存储,使得WinDbg能够解析符号名称。微软的符号服务器是常用的公共符号服务器,即msdl.microsoft.com/download/symbols,它是调试Windows应用程序和Windows内核程序不可或缺的。当然,用户也可以搭建自己的符号服务器。
1.WinDbg默认的设置路径
File -> Settings -> Debugging settings,默认的源码路径、符号路径和缓存路径如下:
2.设置_NT_SYMBOL_PATH环境变量
设置_NT_SYMBOL_PATH环境变量的值为:
SRV*D:\mysymbol*/thread-... [3]Windbg调试命令详解: yiiyee.cn/blog///... [4]WinDbg用法详解: wenku.baidu.com/view/ca... [5]Good tutorial for WinDbg: stackoverflow.com/quest... [6]WinDbg设置调试符号路径与调试符号下载: blog.csdn.net/qq_... [7]dotnet/symreader-portable: github.com/dotnet/symre... [8]搭建自己的符号服务器: bbs.pediy.com/thread-... [9]Windows调试工具: docs.microsoft.com/zh-c... []WinDbg Online Help: dbgtech.net/windbghelp/... []WinDbg官方文档: windbg.org/ [].NET探秘:MSIL权威指南: url.ctfile.com/f/... (访问密码: )
本文由 mdnice 多平台发布