Windows2000服务程序的两个问题(如何调试,设置界面)。

sungengyu 2005-07-04 03:25:31
1.服务程序如何调试?

2.我希望服务程序有自己的设置界面,怎么做?


谢谢!

...全文
268 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
loakia 2006-04-22
  • 打赏
  • 举报
回复
up
idAnts 2005-07-11
  • 打赏
  • 举报
回复
你在服务程序里直接输出OutputDebugString,然后用debugview来观察。
去这下载。
http://www.sysinternals.com/Utilities/DebugView.html
Jagen在路上 2005-07-11
  • 打赏
  • 举报
回复
不错不错
sungengyu 2005-07-11
  • 打赏
  • 举报
回复
这个东西不错:

http://www.vckbase.com/document/viewdoc/?id=1095

基于MFC对话框的NT服务程序框架


sungengyu 2005-07-11
  • 打赏
  • 举报
回复
1.可以先做一个控制台外壳,先把程序条稳定了,再以服务方式启动;
--------------------------------------------------
这个方法倒是不错。

******************************************************************

我习惯用OutputDebugString来输出信息。
--------------------------------------------------
服务程序是用 Microsoft Management Console 启动的,如何用 OutputDebugString 输出呢?

******************************************************************
_ASSERT(FALSE);
--------------------------------------------------
非常感谢!

Soft-ice 我没用过 :(



idAnts 2005-07-04
  • 打赏
  • 举报
回复
我习惯用OutputDebugString来输出信息。
Zhymax 2005-07-04
  • 打赏
  • 举报
回复
1.可以先做一个控制台外壳,先把程序条稳定了,再以服务方式启动;
另外可以使用log文件,把各种消息或错误记录下来,信息全面的log可以帮你很快找到问题原因;

2.http://www.codeguru.com/Cpp/W-P/system/ntservices/article.php/c5749
bager 2005-07-04
  • 打赏
  • 举报
回复
〉1.服务程序如何调试?

你可以试一下这个方法:
1、ServiceMain函数起始处添加ASSERT(0);语句

inline void CXXX::ServiceMain(DWORD /* dwArgc */, LPTSTR* /* lpszArgv */)
{
ASSERT(0);
//...

}
2、编译DEBUG版本的服务程序,注册服务并启动。此时将显示Debug Assertion Failed调试信息对话框
3、启动任务管理器,从中选择你的服务进程,右击选择调试。在弹出的警告对话框中点击“YES”按钮。此时系统将启动MSDEV.exe
4、在Debug Assertion Failed调试信息对话框中点击“重试”按钮,执行断点将显示在 ASSERT(0);语句处。
至此,F10、F11随便按吧。

如果服务程序提供对外的接口,调试它就更容易了。(像调DLL一样,从接口函数进入即可)

〉2.我希望服务程序有自己的设置界面,怎么做?
可以使用进程间通信,也可以按照边城浪子的方法实现
下述链接可以参照
http://www.codeproject.com/system/iconservice.asp
wangk 2005-07-04
  • 打赏
  • 举报
回复
服务程序调试方法二:
在要下断点的地方用_ASSERT(FALSE);或者DebugBreak();启动Debug版Service。
出现错误提示框时选择Cancle进入调试(DebugBreak),或则选择Retry(_ASSERT),然后打开Stack,定位到向调试的函数里。

服务程序调试方法三:
请使用Soft-Ice
wangk 2005-07-04
  • 打赏
  • 举报
回复
1.服务程序如何调试?
启动Debug版Service,用VC Attach到上面,然后用Soft Break,接着在源码里下断点,接着运行就可以了。有些词汉语我不大会解释,如果你用的是英文版,大概会明白吧。

2.我希望服务程序有自己的设置界面,怎么做?
设置Service与桌面交互,然后建立一个线程,在线程中生成用户界面即可。
sungengyu 2005-07-04
  • 打赏
  • 举报
回复
krh2001(边城浪子) : 没明白。

是不是另写一个程序来设置参数,并且控制服务程序的启动、停止……

jerry 2005-07-04
  • 打赏
  • 举报
回复
将你的服务程序做成COM形式。暴露一个设置用的COM接口,然后你就可以通过另一个EXE程序调用些接口来设置你的服务器了。一般不在服务程序里产生界面。因为那样会很麻烦的。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧