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类型也可以的。

RAKsmart秒杀服务器$30/月,洛杉矶/圣何塞/香港/日本站群特价

RAKsmart发布了9月份优惠促销活动,从9月1日~9月30日期间,爆款美国服务器每日限量抢购最低$30.62-$46/月起,洛杉矶/圣何塞/香港/日本站群大量补货特价销售,美国1-10Gbps大带宽不限流量服务器低价热卖等。RAKsmart是一家华人运营的国外主机商,提供的产品包括独立服务器租用和VPS等,可选数据中心包括美国加州圣何塞、洛杉矶、中国香港、韩国、日本、荷兰等国家和地区数据中心(...

UCloud云服务器香港临时补货,(Intel)CN2 GIA优化线路,上车绝佳时机

至今为止介绍了很多UCLOUD云服务器的促销活动,UCLOUD业者以前看不到我们的个人用户,即使有促销活动,续费也很少。现在新用户的折扣力很大,包括旧用户在内也有一部分折扣。结果,我们的用户是他们的生存动力。没有共享他们的信息的理由是比较受欢迎的香港云服务器CN2GIA线路产品缺货。这不是刚才看到邮件注意和刘先生的通知,而是补充UCLOUD香港云服务器、INTELCPU配置的服务器。如果我们需要他...

RackNerd:特价美国服务器促销,高配低价,美国多机房可选择,双E526**+AMD3700+NVMe

racknerd怎么样?racknerd今天发布了几款美国特价独立服务器的促销,本次商家主推高配置的服务器,各个配置给的都比较高,有Intel和AMD两种,硬盘也有NVMe和SSD等多咱组合可以选择,机房目前有夏洛特、洛杉矶、犹他州可以选择,性价比很高,有需要独服的朋友可以看看。点击进入:racknerd官方网站RackNerd暑假独服促销:CPU:双E5-2680v3 (24核心,48线程)内存...

outputdebugstring为你推荐
身份证正反面图片身份证正反两面的照片能做什么csonline2看新闻 csol2 马上就要发布了 我有个问题问大神们 拜托了匹配函数excel中vlookup函数的用法应用雷达雷达是什么东西企业资源管理系统企业人力资源管理系统的重要性?华为总裁女儿为啥姓孟孟晚舟是谁扫图高清扫图是什么意思,在很多的贴吧里,都有提到一些高清扫图,是自己照杂志上的图片,然后自己再修一下吗12种颜色油画的基本12种颜色是什么遗传算法实例求助fortran语言编写的混合遗传算法例子那位大哥大姐有?腾讯技术腾讯QQ是谁研发的?在那一年上市的?
域名服务器 免费域名注册 长沙域名注册公司 科迈动态域名 香港服务器99idc Dedicated 太原联通测速平台 有奖调查 网络空间租赁 最好的qq空间 gtt 如何安装服务器系统 美国独立日 论坛主机 游戏服务器出租 成都主机托管 大化网 腾讯服务器 cc加速器 赵荣 更多