调试扩展模块(SOE 或 SOI)会遇到某些挑战,因为您必须进入一个正在运行的服务进程。ArcGIS Server Manager 提供了多种设置以帮助您调试 Java 扩展模块。下面将更详细地介绍这些设置。您只能通过使用 Visual Studio 调试程序来调试 .NET 扩展模块;没有可用于 .NET 扩展模块的管理器调试工具。ArcObjects .NET SDK 帮助中包含 .NET 扩展模块的调试说明。
调试工作流
要调试扩展模块,需要执行以下操作:
- 使用 ArcGIS Server Manager 部署扩展模块。
- 使用 Manager 来启用对扩展模块的调试并配置调试设置。下面将更详细地介绍这些内容。
- 在扩展模块代码中的所需位置处设置断点。
- 停止然后启动服务。
- 立即将调试程序附加到运行服务的操作系统进程。如果断点位于扩展模块初始化代码中,则断点会在服务启动时触发。否则,断点将在使用扩展模块时触发。
- 使用 Manager 以禁用调试。
在 Manager 中配置调试设置
为便于调试,您可使用 ArcGIS Server Manager 更改扩展模块行为。您可以选择暂停服务启动,这样在调用扩展模块初始化方法之前将调试程序附加到服务进程中。您还可指定调试服务时使用的一系列端口。
要在 Manager 中访问这些调试设置,请执行以下步骤:
- 登录 ArcGIS Server Manager,然后单击站点。
- 单击 GIS Server > 扩展模块。
- 单击调试设置然后选中启用扩展模块调试。这将启用对话框中的其他选项。
- 另外,选中暂停服务启动,然后输入服务启动应延迟的秒数。
当服务启动时,某些扩展模块代码仅运行一次。此代码通常位于 IObjectConstruct 界面的构建 (Construct) 方法中。在构建 (Construct) 方法运行之前,暂停服务启动可留出时间将调试程序附加到服务进程中,这样您可以触发在方法的代码中所设置的任意断点。
- 另外,指定调试时使用的一系列端口。
- 单击保存。
现在,您可以通过停止服务、再次启动服务以及将调试程序附加到运行服务的操作系统进程中来调试扩展模块。如果设置时间窗来暂停服务启动,则在到达该时间窗之前需要将调试程序附加到服务进程中;否则不会在扩展模块的构建方法中触发任何断点。
可以根据需要在调试进程中多次停止和启动服务。
警告:
在完成对扩展的调试之后,返回到调试设置,然后取消选中启用扩展的调试。如果无法执行此操作,并且已配置设置以暂停服务启动,则每次尝试启动服务时,都会延迟。