outputdebugstring我在VS2010下使用 OutputDebugString 看到的为什么是一堆乱码

outputdebugstring  时间:2021-06-10  阅读:()

debugview工具 能捕捉 printf么

在程序中使用如下函数:   1> OutputDebugString 或者在MFC中使用TRACE   2> 内核模式中使用Out_Debug_String,DbgPrint ,_Debug_Printf_Service 编译程序为DEBUG版本,然后运行程序(不是在vs 中运行,是单独运行),打开debugview 就可以在其中看到输出的调试信息。

Debugview 也支持远程调试,在本机运行Dbgview.exe /c/s/t 可以让DebugView以服务的形式运行。

在远端打开Debugview,点击Computer/connect ,输入查看调试信息主机的IP ,点击确定即可。

UE4的停止调试声音怎么关闭

首先,编译出引擎。

对于学习目的来说,从网上下载一份就够了,编译步骤简单的描述一下:我们把下载的代码解压到指定的目录,包括UnrealEngine-4.*.*-release.7z,Required_1of2.7z,Required_2of2.7z,三个文件。

解压完成之后,在解压目录中,双击GenerateProjectFiles.bat 运行,等待完成。

然后会生成UE4.sln文件。

这样就可以打开UE4解决方案,编译出引擎。

如何在托管代码中使用 autoproxy

在托管代码中使用 roxy 若要在托管代码中实现 roxy,请按照下列步骤操作: 创建使用 roxy 托管的 DLL。

创建示例应用程序,以验证 roxy 的实现。

back to 创建托管的 DLL 使用 roxy 若要进行托管的 DLL 使用 WinHTTP roxy 函数检索代理信息,请按照下列步骤操作: 启动 Microsoft Visual 。

在 文件 菜单上指向 新建,然后单击 项目。

在 新建项目 对话框。

在 项目类型 框中,单击 Visual c + + 项目,然后单击 模板 下的 托管 c + + 类库。

如果使用的 Visual 2003年单击 模板 下的 类库 (.NET)。

在 名称 框中键入 roxy,然后单击 确定。

在解决方案资源管理器中,用鼠标右键单击 roxy.h,然后单击 打开。

roxy.h 文件中的现有代码替换下面的代码: // AutoProxy.h #define UNICODE #include #include #include "path of the header filewinhttp.h" #include #ment (lib, "winhttp.lib") #pragma once using namespace System; using namespace System::Runtime::InteropServices; namespace AutoProxy { public __gc class Class1 { private: TCHAR* szUrl; TCHAR* szAutoProxyLocation; public: Class1 (String* szUrlParam) { TCHAR szMessage[1024]; szUrl = (TCHAR *)(void*)Marshal::StringToCoTaskMemUni(szUrlParam); swprintf (szMessage, L"Initializing class for URL %s with autorpxy ", szUrl); OutputDebugString (szMessage); szAutoProxyLocation = NULL; CoInitialize(NULL); }; Class1 (String* szUrlParam, String* proxyUrl) { TCHAR szMessage[1024]; szUrl = (TCHAR *)(void*)Marshal::StringToCoTaskMemUni(szUrlParam); szAutoProxyLocation = (TCHAR*)(void*)Marshal::StringToCoTaskMemUni(proxyUrl); swprintf (szMessage, L"Initilizing class for url %s with proxy location %s ", szUrl, szAutoProxyLocation); OutputDebugString (szMessage); CoInitialize(NULL); }; ~Class1 () { OutputDebugString (L"Class1 destruct "); CoUninitialize (); }; String* GetProxyForUrl()throw (TCHAR*) { TCHAR szError [1024]; HINTERNET hHttpSession = NULL; WINHTTP_AUTOPROXY_OPTIONS AutoProxyOptions; WINHTTP_PROXY_INFO ProxyInfo; DWORD cbProxyInfoSize = sizeof(ProxyInfo); TCHAR* szProxy; ZeroMemory( &AutoProxyOptions, sizeof(AutoProxyOptions) ); ZeroMemory( &ProxyInfo, sizeof(ProxyInfo) ); hHttpSession = WinHttpOpen( L"WinHTTP AutoProxy Sample/1.0", WINHTTP_ACCESS_TYPE_NO_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS,0 ); // Exit if the WinHttpOpen function fails. if( !hHttpSession ) { // Clean the WINHTTP_PROXY_INFO structure. if( ProxyInfo.lpszProxy != NULL ) GlobalFree(ProxyInfo.lpszProxy); if( ProxyInfo.lpszProxyBypass != NULL ) GlobalFree( ProxyInfo.lpszProxyBypass ); } // Set up the roxy call. if (szAutoProxyLocation) { // The proxy auto-configuration URL is already known. // Therefore, auto-detection is not required. AutoProxyOptions.dwFlags = WINHTTP_AUTOPROXY_CONFIG_URL; // Set the proxy auto configuration URL. AutoProxyOptions. lpszAutoConfigUrl = szAutoProxyLocation; } else { // Use auto-detection because you do not know a PAC URL. AutoProxyOptions.dwFlags = WINHTTP_AUTOPROXY_AUTO_DETECT; // Use both Dynamic Host Configuration Protocol (DHCP) // and Domain Name System (DNS) based auto-detection. AutoProxyOptions.dwAutoDetectFlags = WINHTTP_AUTO_DETECT_TYPE_DHCP |WINHTTP_AUTO_DETECT_TYPE_DNS_A; } // If obtaining the PAC script requires NTLM/Negotiate // authentication, automatically supply the domain credentials // of the client. AutoProxyOptions.fAutoLogonIfChallenged = TRUE; // Call the WinHttpGetProxyForUrl function with our target URL. if( WinHttpGetProxyForUrl( hHttpSession,szUrl,&AutoProxyOptions,&ProxyInfo)) { switch (essType) { case WINHTTP_ACCESS_TYPE_DEFAULT_PROXY: OutputDebugString (L"WINHTTP_ACCESS_TYPE_DEFAULT_PROXY "); break; case WINHTTP_ACCESS_TYPE_NO_PROXY: OutputDebugString (L"WINHTTP_ACCESS_TYPE_NO_PROXY "); break; case WINHTTP_ACCESS_TYPE_NAMED_PROXY: OutputDebugString (L"WINHTTP_ACCESS_TYPE_NAMED_PROXY "); break; } if (ProxyInfo.lpszProxy) { szProxy = new TCHAR [lstrlen (ProxyInfo.lpszProxy)]; lstrcpy (szProxy, ProxyInfo.lpszProxy); } // Clean the WINHTTP_PROXY_INFO structure. if (ProxyInfo.lpszProxy != NULL) GlobalFree(ProxyInfo.lpszProxy); if (ProxyInfo.lpszProxyBypass != NULL) GlobalFree(ProxyInfo.lpszProxyBypass); } else { DWORD dwErr = GetLastError(); switch (dwErr) { case ERROR_WINHTTP_AUTODETECTION_FAILED: swprintf(szError, L"ERROR_WINHTTP_AUTODETECTION_FAILED "); break; case ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT: swprintf(szError,L"ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT "); break; case ERROR_WINHTTP_INCORRECT_HANDLE_TYPE: swprintf(szError,L"ERROR_WINHTTP_INCORRECT_HANDLE_TYPE "); break; case ERROR_WINHTTP_INVALID_URL: swprintf(szError,L"ERROR_WINHTTP_INVALID_URL "); break; case ERROR_WINHTTP_LOGIN_FAILURE: swprintf(szError,L"ERROR_WINHTTP_LOGIN_FAILURE "); break; case ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT: swprintf(szError,L"ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT "); break; case ERROR_WINHTTP_UNRECOGNIZED_SCHEME: swprintf(szError,L"ERROR_WINHTTP_UNRECOGNIZED_SCHEME "); break; default: swprintf (szError, L"Error %d ", dwErr); } throw (new Exception(szError)); } // Close the WinHTTP handles. if( hHttpSession != NULL ) WinHttpCloseHandle( hHttpSession ); // Return the proxy settings. Marshal::FreeHGlobal(szUrl); return new String (szProxy); } }; } 注意 在此的代码 path of the header file 是一个占位符 winhttp.h 文件在您的计算机上的路径。

与 Microsoft 平台软件开发工具包 (SDK) 包括了 Winhttp.h 文件和 $ Winhttp.lib 文件。

要下载平台 SDK,请访问下面的 Microsoft 网站: /msdownload/platformsdk/sdkupdate/ 在解决方案资源管理器中,用鼠标右键单击 roxy,然后单击 属性。

roxy 属性页 对话框出现。

在左窗格中单击 配置属性,下的 链接器,然后单击 输入。

在右窗格中 附加依赖项 框中键入 path of winhttp library winhttp.lib" 注意path of winhttp library 是 Winhttp.lib 文件在您的计算机上的占位符。

在 附加依赖项 框中键入 msvcrt.lib。

在 强制符号引用 框中键入 __DllMainCRTStartup@12,然后单击 确定。

在 生成 菜单上单击 生成解决方案,以生成项目。

back to 创建示例应用程序,以验证 roxy 的实现 若要创建一个示例应用程序,它使用托管的 DLL 由使用 Visual ,然后显示您创建的代理服务器设置,请按照下列步骤操作: 启动 Visual 。

在 文件 菜单上指向 新建,然后单击 项目。

在 新建项目 对话框。

单击 项目类型 下的 Visual C# 项目、 在 模板 框中,单击 控制台应用程序,然后单击 确定。

默认状态下,创建名为 Class1.cs 文件。

添加到您创建的 roxy.dll 文件的引用。

若要这样做,请按照下列步骤操作: 在解决方案资源管理器中,右击 引用,然后单击 添加引用。

在 添加引用 对话框。

在 选项卡上单击 浏览。

找到您的计算机上 roxy.dll 文件,然后单击 打开。

添加引用 对话框中单击 确定。

Class1.cs 文件中该命名空间声明的开头添加以下代码: using AutoProxy; 将下面的代码添加到 Class1.cs 文件的 Main 方法: AutoProxy.Class1 myProxy = new AutoProxy.Class1("", "http://localhost/PAC/proxy.pac"); try { Console.WriteLine (" Proxy settings for the URL are: {0} ", myProxy.GetProxyForUrl() ); Console.Read(); } catch (Exception myError) { Console.WriteLine (myError.Message); Console.Read(); } 注意 在此的代码 roxy 配置文件的 URL 路径。

如果您没有在计算机上配置的 roxy,您可以按照以下步骤来配置用于测试目的的 roxy: 启动记事本。

将以下代码粘贴到记事本中: function FindProxyForURL(url, host) { return "PROXY 192.168.1.1:8080"; } 在此代码的 注释,192.168.1.1 是您的代理服务器的 IP 地址并 8080 是使您能够访问代理服务器端口。

将文件另存为 Proxy.pac。

创建虚拟目录的 Proxy.pac 文件您在步骤 6 c 中创建的。

有关创建虚拟目录的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 172138如何在 Information Services (IIS) 中创建虚拟目录 注意内容的文件夹路径必须是 Proxy.pac 文件的保存位置文件夹的路径。

在 生成 菜单上单击 生成解决方案,以生成应用程序。

在 调试 菜单上单击 $ 开始 以运行该应用程序。

您可以看到在输出中的代理设置。

注意代理服务器的 URL 获取特定请求的 URL 后,您可以使用 HttpWebRequest.Proxy 属性将此属性设置为您的请求。

此外,您可以选择通过您的应用程序所做的所有请求此代理服务器使用 GlobalProxySelection.Select 方法。

Sysinternals Suite 里面常用工具的作用

我比较常用到的几个Sysinternals工具: * Autoruns.exe:这个可以用来查看Windows在启动是会自动运行那些程序/服务等。

它会检查很多地方,比如象常见的注册表里面的HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun键值、资源管理器或IE的加载项等,这在查找一些随着系统启动加载的流氓软件等时应该会有用。

* Bginfo.exe:这个工具可以在你的桌面上显示你的一些系统信息,如机器名、CPU类型、内存、硬盘剩余空间什么的。

如果你一个人用好几台电脑并且都是通过远程桌面在使用的话,这个工具倒是可以帮你分清楚你是在哪台电脑上。

* Dbgview.exe(DebugView):可以用来查看你自己(或者别人)写的程序里面通过OutputDebugString输出的调试信息。

* ProcExp.exe(Process Explorer):这个可以替代Windows默认的的任务管理器。

为系统当前运行的所有进程提供更丰富的信息,如打开的句柄(如文件句柄等),动态连接的DLL(这个比较常用)。

* Procmon.exe(Process Monitor):可以监视系统里面各个应用程序读写文件/注册表等的各种事件/文件名/注册表键值等等。

对了,这个工具合并了原来分离的两个工具-文件操作监控FileMon和注册表操作监控RegMon。

* ZoomIt.exe:这个在你给别人做演示的时候很有用。

你可以很方便地用热键放大屏幕,并可移动鼠标在屏幕的不同部分平移,滑动滚轮调节放大比例。

也可以用热键激活能在屏幕上直接画图的彩色笔。

下面几个是在命令行上运行的: * pskill.exe:可以在命令行直接杀死某个当前运行的进程。

杀死进程的速度比用任务管理器结束进程快得多! * pslist.exe:可以在命令行上列举出当前系统运行的全部进程的名字以及其它信息。

* regjump:自动打开注册表编辑器并跳转到你指定的某个键的位置。

其它还有一些跟网络相关的工具,因为我对于网络不是太熟悉,所以没有什么了解。

其他有用过的朋友可以补充。

真心求OutputDebugString怎么用

比如很常见的,程序在debug下运行正常,release下崩溃,就可以用 OutputDebugString( _T("函数1调用开始") ); OutputDebugString( _T("函数2调用开始") ); OutputDebugString( _T("函数3调用开始") ); 等等信息来判断是在执行哪一个函数时发生的...

我在VS2010下使用 OutputDebugString 看到的为什么是一堆乱码

OutPutDebugString((LPCWSTR)s) //你这个强制转换有问题, OutPutDebugString(s) 不用转换就OK 转换这个LPCTSTR类型也可以的。

CloudCone闪购优惠洛杉矶MC机房VPS月$1.99 便宜可随意删除重开

CloudCone商家我们很多喜欢低价便宜VPS主机的肯定是熟悉的,个人不是特别喜欢他。因为我之前测试过几次,开通的机器IP都是不通的,需要删除且开通好几次才能得到一个可用的IP地址。当然他们家的优势也是有的,就是价格确实便宜,而且还支持删除重新开通,而且机房只有一个洛杉矶MC。实话,如果他们家能多几个机房,保持现在的特点,还是有很多市场的。CloudCone是来自美国的主机销售商,成立于2017...

QQ防红跳转短网址生成网站源码(91she完整源码)

使用此源码可以生成QQ自动跳转到浏览器的短链接,无视QQ报毒,任意网址均可生成。新版特色:全新界面,网站背景图采用Bing随机壁纸支持生成多种短链接兼容电脑和手机页面生成网址记录功能,域名黑名单功能网站后台可管理数据安装说明:由于此版本增加了记录和黑名单功能,所以用到了数据库。安装方法为修改config.php里面的数据库信息,导入install.sql到数据库。...

HostKvm:夏季优惠,香港云地/韩国vps终身7折,线路好/机器稳/适合做站

hostkvm怎么样?hostkvm是一家国内老牌主机商家,商家主要销售KVM架构的VPS,目前有美国、日本、韩国、中国香港等地的服务,站长目前还持有他家香港CN2线路的套餐,已经用了一年多了,除了前段时间香港被整段攻击以外,一直非常稳定,是做站的不二选择,目前商家针对香港云地和韩国机房的套餐进行7折优惠,其他套餐为8折,商家支持paypal和支付宝付款。点击进入:hostkvm官方网站地址hos...

outputdebugstring为你推荐
scheduleatfixedrateschedule 和 scheduleAtFixedRate 的区别csonline2看新闻 csol2 马上就要发布了 我有个问题问大神们 拜托了cpu监控电脑硬件监控软件有哪些?华为总裁女儿为啥姓孟任正非女儿为什么姓孟?腾讯公告腾讯出什么事了 所有QQ用户空间农场什么的都打不开 有的连空间都进不去 又受攻击了?自定义表情手机QQ自定义表情怎么添加asp大马问:ASP是什么?ASP根据什么制作木马的?ASP木马和大马有什么区别?天翼校园宽带天翼校园宽带 是怎么算时间的 一个月 是指从办理那天开始 往后 30天是一个月吗 还是 办理的那天所在的那个审计平台什么是审计工具papertiger亚瑟士 艾斯克斯 tiger有什么区别吗
主机域名 香港vps99idc 美国php主机 seovip 本网站在美国维护 anylink 200g硬盘 秒杀汇 免费测手机号 华为云盘 空间首页登陆 便宜空间 带宽租赁 上海电信测速 免费ftp 深圳主机托管 中国电信宽带测速 googlevoice cc加速器 美国vpn服务器 更多