带dos调试窗口的win32程序

#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")

方法只要
在cpp文件头部加入一行:

#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
//以console程序样式,并且制定winmain的入口.
此位置在系统.h的后面。如放在:stdafx.h的后面就可以。

不管是vc6还是.net都可以。

如果link无效,需要替换WinMainCRTStartup

入口函数有:
mainCRTStartup
wmainCRTStartup
wWinMainCRTStartup
WinMainCRTStartup
---------------------
在vc2005中的mfc和sdk 程序的入口不同。mfc的入口为WinMainCRTStartup。sdk程序的入口为:wWinMainCRTStartup。

vc6的入口都是WinMainCRTStartup。
以上请大家注意。

在使用printf语句之前记得把stdio.h的头文件包含进去.就可以.实现这个有趣的程序.其实在调试一些大型的win32 gui程序的时候这个dos窗口相当的有用.

反过来.你在console工程中加入
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置console的入口地址和gui样式.
dos窗口就消失了.之会显示像 MessageBox之类的gui窗体.

这些link选项最后都会填写到PE头文件的Subsystem节中里面只需要把03(console模式,WINDOWS_CUI=3)该为02(WINDOWS_GUI=2).简单点使用修改pe头文件的工具直接修改就可以使gui程序中的printf函数生效.

一般放在#include "stdafx.h"的后面,才有效
sdk:
#pragma comment( linker, "/subsystem:\"console\" /entry:\"wWinMainCRTStartup\"")
#pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup")

mfc:
#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup")
实际编程上面的应用的sdk程序中

http://blog.csdn.net/xhhjin/article/details/6658941

时间: 2024-12-27 22:09:46

带dos调试窗口的win32程序的相关文章

OD调试1--第一个win32程序

OD调试一:第一个Win32程序的修改 在软件开发的过程中,程序员会使用一些调试工具,以便高效地找出软件中存在的错误.而在逆向分析领域,分析者也会利用相关的调试工具来分析软件的行为并验证分析结果.由于操作系统都会提供完善的调试接口,所以利用各类调试工具可以非常方便灵活地观察和控制目标软件.在使用调试工具分析程序的过程中,程序会按调试者的意愿以指令为单位执行. 调试逆向分为动态分析技术和静态分析技术. 动态分析技术指的是使用调试工具加载程序并运行,随着程序运行,调试者可以随时中断目标的指令流程,以

在Win32程序中显示Dos调试窗口,可暂停(AllocConsole,WriteConsole,FreeConsole函数,GetStdHandle函数取得输入句柄)

在很多程序中,都可以看到程序运行中,会有一个Dos窗口,实时显示一些运行信息,这里就告诉大家是如何实现的,我们做个简单的,其实对控制台的操作还有很多,有兴趣的可以去查资料. 用到的API函数如下: //创建控制台 AllocConsole; //获取控制台窗口 GetStdHandle; //向控制台输出信息 WriteConsole; //释放控制台 FreeConsole; unit Unit1; interface uses Windows, Messages, SysUtils, Var

Win32 程序开发:窗口类结构体 WNDCLASS 和 WNDCLASSEX

一.窗口类结构体简介 窗口类结构体包含了窗口的各种参数信息.比如:窗口的图标.菜单栏.背景颜色.窗口的消息处理等等. 窗口类结构体有两个:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本).至于为什么有 WNDCLASSEX 还要保留老版本的 WNDCLASS?主要是为了兼容以前使用老版本开发的 Win32 程序才保留的. 二.窗口类结构体的成员变量 这里暂时只介绍新版本的 WNDCLASSEX,也更推荐使用新版本的. typedef struct tagWNDCLASSEXW {

Win32 程序开发:创建一个应用程序窗口

一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSNAME"; WCHAR g_lpszWindowName[] = L"哈喽,新的征程"; // 函数声明 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // 应用程序主函数 INT APIENTRY WinMain(H

调试 Android* x86 应用程序的方法以及要使用的工具

作者:Xiaodong Wang 1.简介 众所周知,Android* 开发人员头顶许多称呼:设计员.程序猿等,并且通常会不可避免地被称为故障检修工.代码中的错误无法避免,因此无论您是否一开始就造成错误,了解调试工具以及如何迅速而有效地跟踪并解决错误都很重要.鉴于此,如今的 Android 开发人员必须掌握有效的调试技巧.本文提供了 Android 应用程序调试工具的简单教学,用于帮助 Android SDK 以及相关工具的新手迅速入门,并在 Android x86 平台上更有效地解决故障. 2

使用AllocConsole在Win32程序中调用控制台调试输出

近期一个Win32窗口项目中,调试时经常需要输出调试信息以追踪数据流及程序运行状态. 起初我封装了一系列文件操作,实现了日志形式的调试信息输出,但在后期的使用过程中越发觉得颇不顺手.那么,如何方便地在Win32程序中使用控制台进行调试输出?答案如题:AllocConsole函数和C-Runtime的freopen函数.具体操作流程如下: 打开控制台 重定向输出流至控制台 执行调试信息输出操作 完整代码如下: SetConsoleTitle(_T("Debug Output")); fr

64位系统运行win32程序 界面卡死问题

win7 下运行游戏发现界面卡很久,跟踪发现卡在了connect( ). 游戏中connect 工作在阻塞模式下,阻塞可以接受.但是阻塞了5S 以上就感觉很奇怪. 而且只在一台电脑上发生这种情况.与服务器联调,并抓包.发现真正发起连接到连接成功其实非常快的. 时间主要耗在调用 connect  到显卡 发出连接请求之间. 于是在出问题的电脑上 想要断点调一下connect.发现VS 附加到进程的时候 提示 A remote operation is taking longer than expe

IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS

转载:http://article.ityran.com/archives/1143 有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了.(悲伤地音乐响起) 我们需要做的第一件事就是:不要惊慌. 修复崩溃不是很困难的.假如你崩溃了,并且胡乱的改些东西,而且还在不停的念着咒语希望bug神奇的自动消失,你大多数情况下都会使情况更麻烦.相反的,你需要知道一些系统的方法,并且学习怎么找到崩溃和他的原因. 第一件需要知道的就是在你的代码中准确的找到cr

21 调试我们的C#程序

我们写的C#程序,很多的时候不是能一次就写对的.尤其是在实际的项目中,你经常要做的工作就是不断修改你写的程序,让它正常运行.程序有错误,主要是两种情况.一种是程序报错了,不能正常运行下去.另一种是程序没有报错,但是程序的执行结果不是我们想要的.通常程序员管这些错误叫做bug.怎么能更容易的找到这些程序的错误呢. Visual Stuido提供了调试的功能让我们可以比较容易的调试程序,更加有效的找到出错的地方. Visual Studio的主要调试功能包括这些: 1. 输出一些关键点的调试信息.