• 做一个幸福的人,读书,旅行,努力工作,关心身体和心情。
  • 不管有没有人爱,也要努力做一个可爱的人。不埋怨谁,不嘲笑谁,也不羡慕谁,阳光下灿烂,风雨中奔跑,做自己的梦,走自己的路。

如何在MFC中分配一个DOS窗口供调试

C/C++ lcq 5年前 (2013-10-22) 538次浏览 0个评论

在写Lua代码的时候,由于是要跟C混编,所以Lua代码里面无法进行单步调试以及查看一些变量的值。又由于是Win32程序,所以没法使用像在DOS窗口里面那样使用printf打印值。这样使得调试起来极其不方便。基于此,所以有必要想办法能查看一些变量的值以及程序代码的执行流程。

微软还真提供了这样的功能,这个函数是AllocConsole。它能为调用进程分配一个新的控制台,只要我们将printf出来的值使用fropen重定向一下即可。废话不说,直接上代码。

这样就可以使用printf打印信息再DOS窗口中显示了。

下面是一个软件调试过程的截图。

附:

AllocConsole 函数

为调用进程分配一个新的控制台。

语法

BOOL WINAPI AllocConsole(void);

参数

此函数没有任何参数。

返回值

如果函数成功,则返回值为非零值。

如果该函数失败,则返回值为零。会设置GetLastError 。

 

如果需要输出CString对象的内容,需要使用wcout。需要添加以下代码:

今天发现有时候需要设置一个本地环境才能打印字符串。即加一句:

setlocale(LC_ALL, “chs”);

参考资料:

AllocConsole()之后,如何重定向stdout,使printf()有效:http://blog.csdn.net/avagrant158/article/details/4736944

http://zhidao.baidu.com/link?url=bqpGYETColDeF7gGMlRGCfi_ZyqdhdPnN7kpRMO4UwXYI9yh55FK93gDc_Uv1Twi7Dr9diG_cWTk2-d0eRRGvq

MFC调用win32窗口显示调试信息,使用AllocConsole 函数: http://blog.sina.com.cn/s/blog_4bf793ad0100mv2e.html


乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何在MFC中分配一个DOS窗口供调试
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址