如何在Windows上的控制台输出中断(设置断点)?
背景:
我正在我的开发者PC上运行一个大型的nUnit测试套件(通过nunit-console),我在控制台窗口看到了一些垃圾输出. 被测单元确实涉及.NET代码以及底层的C和C库,我还没有找到谁在生成垃圾输出. 题: 是否有一个Windows API函数,其中所有控制台输出都通过? (无论它来自哪里.) 我已经尝试在WriteConsole中设置一个断点,但是甚至没有从CRT捕获printf输出.是否有任何“中心”位置来设置断点以捕获Windows应用程序中的所有控制台输出? (有些Nt ……功能?) 解决方法
控制台I / O在Windows上调用ReadFile和WriteFile. WriteFile是控制台输出的例程.最好挂钩或断点WriteFile并过滤指定给它的句柄.不要将实际的文件I / O误认为是控制台句柄上的操作.
要获取Windows进程上用于控制台输出的正确句柄: GetStdHandle(STD_OUTPUT_HANDLE); 或者,使用CreateFile打开控制台输出句柄并指定CONOUT $工作,也建议: HANDLE console_output = CreateFileA(“CONOUT $”,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 这将返回WriteFile调用中需要注意的句柄.就像使用钩子一样,您可以指定断点的条件并检查调用中的正确控制台句柄. 在Microsoft documentation中使用ReadFile / WriteFile的控制台句柄操作更多 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 重装windows系统后配置Anaconda
- 【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27
- win10 nginx
- windows – 为什么DHCP服务器需要静态IP地址?
- Windows – Visual Studio 2010 – 如何减少其内存占用
- winapi – 为win32 API创建上下文菜单
- windows – 打开WDK Projects会导致出现“发生一个或多个错
- 调试 – Windows Azure角色无响应
- Win10中智能客户端打开后,出现验证后无响应,并且在任务管
- 什么是不同的Team Foundation Server(TFS)和Microsoft Visu