当前位置:首页 » 城管服务 » 调试服务

调试服务

发布时间: 2021-01-10 07:39:36

⑴ C#写服务怎么调试

第一种方案:复使用附加制至进程,直接附加到服务中即可。但这种方式不大适合未处理错误崩了的情况

第二种方案:
1. 更改项目的输出类型由Windows 应用程序为控制台应用程序
2. 在调试设置页面启动选项的命令行参数中随意输入几个字符,如DEBUG
3. 关键的地方来了,转到Program.cs页面的Main函数处,手动加入一个参数,如static void Main(string[] args)
4. 在Main中更改代码
if(args.Length==0)//这是服务启动的条件
{
//将原有生成的启动服务的代码拷贝至此处
}
else//即有启动选项的命令行参数DEBUG了
{
//将服务中的类当作一个普通类来使用即可,如
***Service srv = new ***Service();
srv.DoSomeThing();
Console.Read();
}
5. 调试时,直接在项目处点击鼠标右键,选择 调试—启动新实例,这样就进入了else模式,就可以不用作为服务来运行了。

⑵ 如何跟踪和调试Windows服务

1、调试windows 服务是system级别复的所有在制win7或win8下一定要以管理员身份启动,启动后添加新建项目windows服务
确定就建立了一个windows服务程序
2、程序入口点自然在program中 main函数 跟控制台程序有点相似
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
}

⑶ 怎样调试Windows服务

第一方法:
这种方法其实说起来不叫调试,也是一种笨办法,就是用MessageBox把一些程序的中间信息输出来,方便你找出程序是在哪个地方出问题了,你也可以在try catch中使用,用MessageBox把异常弹出来,这种方法也比较直观。可惜,实现起来也有问题。我们首先要添加using System.Windows.Forms;的引用,然后加上一行代码MessageBox.Show(ex.ToString(),"Error");本以为这样说行了,可是把服务重新编译生成,并安装启动后,它并没有弹出框来。百思不得其解。幸好,在服务的程序里面,启用了系统的日志,它会把相关的异常记录到系统日志中去,在“计算机管理”的“事件查看器”里面可以找到。果然发现了一个,
显示的信息是
“当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。”
直接网络,找到了一个答案,原来是调用MessageBox时,还需要设置它的MessageBoxOptions属性为DefaultDesktopOnly。修改如下:
MessageBox.Show(ex.ToString(),"Error", MessageBoxButtons.OK, MessageBoxIcon.Information,MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
然后再次重新编译,安装并启动,OK,顺利的弹出了错误的信息。

第二种方法:
第二种方法就是真正的调试,其实Windows服务还是可以调试的,应该说任何一种类型的程序都应该能调试,别人在开发编译器的时候就人考虑到的。下面来看具体的方法。
我们知道,任何一个程序都有一个对应的进程,如果你的Windows服务启动后,也会有一个对应的进程。通过任务管理器,就能看到。
我们可以通过VS编译器里面,提供的“附加到进程”这个功能来进行调试。首先你打开你的Windows服务源程序,在里面设置一个断点,例如在OnStart方法中protected override void OnStart(string[] args){}中,然后把你的服务启动,启动过后,在VS的“调试”一栏中找到“附加到进程”
在进程列表里面找到你的进程,
如果没有的话,就把左下角的“显示所有用户的进程”前面的勾选中,然后你就可以找到你的Windows服务的进程了,然后点击确定即可。
点击确定后,可能你等了半天,也没看见它命中断点。哈哈,不要急,前面说漏了一点,我们是先启动的服务,然后再附加的进程,因为服务一启动,就会执行OnStart方法,这时,我们还没有把这个服务的进程附加到VS中去呢?所以在OnStart方法中设置的这个断点肯定不会命中。所以我们需要想个办法,也就是加一个定时器,我们在OnStart方法中启动这个定时器,然后设置这个定时器的时间间隔为1分钟,然后在这个定时器的事件中去设置一个断点。这样把服务重新生成,安装并启动后,把这个进程附加到VS中去,1分钟过后,你就会看到,它命中了断点。不过有一个前提就是,你必须在1分钟内把这个进程附加到VS中去,否则的话,它还是命中不了。
如果还有问题的话,就检查一下,看你的Windows服务是不是在Release模式下生成的,如果是的话,要把它改成在Debug模式下生成。

⑷ 如何调试windows service

第一方法:
这种方法其实说起来不叫调试,也是一种笨办法,就是用MessageBox把一些程序的中间信息输出来,方便你找出程序是在哪个地方出问题了,你也可以在try catch中使用,用MessageBox把异常弹出来,这种方法也比较直观。可惜,实现起来也有问题。我们首先要添加using System.Windows.Forms;的引用,然后加上一行代码MessageBox.Show(ex.ToString(),"Error");本以为这样说行了,可是把服务重新编译生成,并安装启动后,它并没有弹出框来。百思不得其解。幸好,在服务的程序里面,启用了系统的日志,它会把相关的异常记录到系统日志中去,在“计算机管理”的“事件查看器”里面可以找到。果然发现了一个,
clip_image002
显示的信息是
“当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。”
直接网络,找到了一个答案,原来是调用MessageBox时,还需要设置它的MessageBoxOptions属性为DefaultDesktopOnly。修改如下:
MessageBox.Show(ex.ToString(),"Error", MessageBoxButtons.OK, MessageBoxIcon.Information,MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
然后再次重新编译,安装并启动,OK,顺利的弹出了错误的信息。

第二种方法:
第二种方法就是真正的调试,其实Windows服务还是可以调试的,应该说任何一种类型的程序都应该能调试,别人在开发编译器的时候就人考虑到的。下面来看具体的方法。
我们知道,任何一个程序都有一个对应的进程,如果你的Windows服务启动后,也会有一个对应的进程。通过任务管理器,就能看到。
我们可以通过VS编译器里面,提供的“附加到进程”这个功能来进行调试。首先你打开你的Windows服务源程序,在里面设置一个断点,例如在OnStart方法中protected override void OnStart(string[] args){}中,然后把你的服务启动,启动过后,在VS的“调试”一栏中找到“附加到进程”
clip_image004
在进程列表里面找到你的进程,
clip_image006
如果没有的话,就把左下角的“显示所有用户的进程”前面的勾选中,然后你就可以找到你的Windows服务的进程了,然后点击确定即可。
点击确定后,可能你等了半天,也没看见它命中断点。哈哈,不要急,前面说漏了一点,我们是先启动的服务,然后再附加的进程,因为服务一启动,就会执行OnStart方法,这时,我们还没有把这个服务的进程附加到VS中去呢?所以在OnStart方法中设置的这个断点肯定不会命中。所以我们需要想个办法,也就是加一个定时器,我们在OnStart方法中启动这个定时器,然后设置这个定时器的时间间隔为1分钟,然后在这个定时器的事件中去设置一个断点。这样把服务重新生成,安装并启动后,把这个进程附加到VS中去,1分钟过后,你就会看到,它命中了断点。不过有一个前提就是,你必须在1分钟内把这个进程附加到VS中去,否则的话,它还是命中不了。
如果还有问题的话,就检查一下,看你的Windows服务是不是在Release模式下生成的,如果是的话,要把它改成在Debug模式下生成。
详细的说明,可以参考这篇文章Windows服务(附服务开发辅助工具)

⑸ VS C# 怎么调试调试服务

调试Windows服务
调试Windows服务比普通应用程序要困难些,需要很多步骤。服务不能像普通应用程序那样在开版发环境中直接执行来调试,它必须先安装并启动。一旦启动了它,你可以用Visual Studio附加到进程来调试代码。记住,对Windows服务做的任何改动,你都需要卸载并重新安装它。
附加到运行的Windows服务
要调试服权务,你需要按如下步骤附加到Windows服务。这里假设你已经安装了服务并成功启动了它。
1. 在Visual Studio中打开项目
2. 选择调试
3. 选择附加到进程
4. 打开选择所有用户的进程
5. 在可用进程中选择你的进程
6. 点击附加
7. 在timer1_Elapsed方法里设置一个断点,等待它的执行

⑹ 怎样在服务器中调试.net程序

由于服务必须从服务控制管理器的上下文中运行,而不是从 Visual Studio .NET 中运行,因此调试服务不像调试其他 Visual Studio 应用程序类型那样简单。若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中。然后可以使用 Visual Studio 的所有标准调试功能来调试应用程序。
调试 OnStart 方法可能比较困难,因为 Windows 服务管理器将所有尝试启动服务的时间限制在 30 秒内。调试 Windows 服务。
安装您的服务。
可从服务控制管理器、“服务器资源管理器”或代码启动服务。
在 Visual Studio 中,从“调试”菜单中选择“进程”,出现“进程”对话框,单击“显示系统进程”。
在“可用进程”区域内单击服务的进程,然后单击“附加”。
提示 此进程将与服务的可执行文件同名,出现“附加到进程”对话框。
选择任意适当选项,然后单击“确定”关闭对话框。注意 现在已处于调试模式。
设置要在代码中使用的任意断点。
访问服务控制管理器并操纵服务,并发送停止、暂停和继续命令以命中您的断点。

⑺ 如何调试Windows服务

第一方法: 这种方法其实说起来不叫调试,也是一种笨办法,就是用把一些程序的中间信息输出来,方便你找出程序是在哪个地方出问题了,你也可以在try catch中使用,用MessageBox把异常弹出来,这种方法也比较直观。可惜,实现起来也有问题。我们首先要添加using System.Windows.Forms;的引用,然后加上一行代码MessageBox.Show(ex.ToString(),"Error");本以为这样说行了,可是把服务重新编译生成,并安装启动后,它并没有弹出框来。百思不得其解。幸好,在服务的程序里面,启用了系统的日志,它会把相关的异常记录到系统日志中去,在“计算机管理”的“事件查看器”里面可以找到。果然发现了一个,
clip_image002
显示的信息是
“当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。”
直接网络,找到了一个答案,原来是调用MessageBox时,还需要设置它的MessageBoxOptions属性为DefaultDesktopOnly。修改如下:
MessageBox.Show(ex.ToString(),"Error", MessageBoxButtons.OK, MessageBoxIcon.Information,MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
然后再次重新编译,安装并启动,OK,顺利的弹出了错误的信息。

第二种方法:
第二种方法就是真正的调试,其实Windows服务还是可以调试的,应该说任何一种类型的程序都应该能调试,别人在开发编译器的时候就人考虑到的。下面来看具体的方法。
我们知道,任何一个程序都有一个对应的进程,如果你的Windows服务启动后,也会有一个对应的进程。通过任务管理器,就能看到。
我们可以通过VS编译器里面,提供的“附加到进程”这个功能来进行调试。首先你打开你的Windows服务源程序,在里面设置一个断点,例如在OnStart方法中protected override void OnStart(string[] args){}中,然后把你的服务启动,启动过后,在VS的“调试”一栏中找到“附加到进程”
clip_image004
在进程列表里面找到你的进程,
clip_image006
如果没有的话,就把左下角的“显示所有用户的进程”前面的勾选中,然后你就可以找到你的Windows服务的进程了,然后点击确定即可。
点击确定后,可能你等了半天,也没看见它命中断点。哈哈,不要急,前面说漏了一点,我们是先启动的服务,然后再附加的进程,因为服务一启动,就会执行OnStart方法,这时,我们还没有把这个服务的进程附加到VS中去呢?所以在OnStart方法中设置的这个断点肯定不会命中。所以我们需要想个办法,也就是加一个定时器,我们在OnStart方法中启动这个定时器,然后设置这个定时器的时间间隔为1分钟,然后在这个定时器的事件中去设置一个断点。这样把服务重新生成,安装并启动后,把这个进程附加到VS中去,1分钟过后,你就会看到,它命中了断点。不过有一个前提就是,你必须在1分钟内把这个进程附加到VS中去,否则的话,它还是命中不了。
如果还有问题的话,就检查一下,看你的Windows服务是不是在Release模式下生成的,如果是的话,要把它改成在Debug模式下生成。
详细的说明,可以参考这篇文章Windows服务(附服务开发辅助工具)

⑻ 如何用OD调试windows服务程序

不知你说的是sys文件么?
你想用R3
调试器
去调试R0程序?
恐怕就只能想想了
所以,用WinDbg吧,“正宗”的R0动态调试器。
微软出品,值得信赖。
希望有帮助。

⑼ 如何调试 Windows 服务

若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中。
然后可以使用 Visual Studio 的所有标准调试功能来调试应用程序。
例如,如果附加到 WinLogon 进程,然后停止调试,系统就会暂停,因为没有 WinLogon,系统无法运行。
只能将调试器附加到正在运行的服务。
附加进程会中断服务的当前运行;它并不真正终止或暂停服务的处理。
也就是说,如果开始调试时服务正在运行,则在进行调试时,该服务从技术上说仍处于“已启动”状态,但它的处理已挂起。
附加到服务的进程使您能够调试大多数服务代码,但并非全部;例如,由于服务已经启动,因此不能用这种方法调试服务的OnStart方法中的代码,或调试用于加载服务的Main方法中的代码。
解决此问题的一个方法是:在唯一作用是帮助调试的服务应用程序中创建一个临时服务。
可以将两个服务都安装上,然后启动此“虚拟”服务加载服务进程。
临时服务启动了进程后,就可以使用 Visual Studio 中的“调试”菜单来附加到服务进程。
当附加该进程之后,可以设置断点并使用这些断点来调试代码。
当退出用于附加到该进程的对话框时,实际上已处于调试模式。
您可以使用“服务控制管理器”
开始、停止、暂停和继续您的服务,因此命中已设置的断点。
调试成功后,移除此“虚拟”服务。
说明调试OnStart方法可能比较困难,因为 Windows 服务管理器将所有尝试启动服务的时间限制在 30 秒内。

热点内容
影视转载限制分钟 发布:2024-08-19 09:13:14 浏览:319
韩国电影伤口上纹身找心里辅导 发布:2024-08-19 09:07:27 浏览:156
韩国电影集合3小时 发布:2024-08-19 08:36:11 浏览:783
有母乳场景的电影 发布:2024-08-19 08:32:55 浏览:451
我准备再看一场电影英语 发布:2024-08-19 08:14:08 浏览:996
奥迪a8电影叫什么三个女救人 发布:2024-08-19 07:56:14 浏览:513
邱淑芬风月片全部 发布:2024-08-19 07:53:22 浏览:341
善良妈妈的朋友李采潭 发布:2024-08-19 07:33:09 浏览:760
哪里还可以看查理九世 发布:2024-08-19 07:29:07 浏览:143
看电影需要多少帧数 发布:2024-08-19 07:23:14 浏览:121