---
title: "用于数据集成项目的交互式调试器"
date: "2015-10-14"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-integration"
  - "data-mapping"
  - "mapforce"
description: 探索 MapForce 2016 的数据映射调试器，它能让您逐步检查数据集成项目，从而提高调试的准确性和效率。
---
Status: #blog

Tags:  #data-integration #data-mapping #mapforce

Categories: [data-integration](/blog/zh/category/data-integration.md) | [tools](/blog/zh/category/tools.md)
# 用于数据集成项目的交互式调试器

MapForce 2016 引入了一种革命性的数据映射调试器，它允许开发人员在进行数据集成项目时，逐步检查数据映射的输出结果，从而诊断并完善任何复杂程度的项目。这款 [数据映射调试器](https://www.altova.com/zh/mapforce/data-mapping-debugger.html) 为用户提供了深入了解数据集成和 ETL 项目内部运作方式的视角，这种程度的洞察力以前从未实现过。

该调试器适用于所有 MapForce 数据映射，无论您使用何种数据类型组合，包括 [XML、XBRL、JSON、数据库、文本文件、EDI、Excel 或 Web 服务数据](https://www.altova.com/zh/mapforce.html)。它支持链式映射、具有多个输入或输出组件的映射，以及包含用户自定义函数的映射。

![数据映射调试器](/blog/images/debug_2.jpg "Data Mapping Debugger")

MapForce 数据映射调试器支持断点和条件断点，并提供多种手动单步调试选项，用户可以手动调试数据映射，或者在达到断点后继续执行。这使得用户可以根据需要查看尽可能详细的信息。 <!--more-->

我们可以通过一个示例调试过程，来了解 MapForce 2016 调试器中引入的新功能和特性。下图展示了一个名为 "ClassifyTemperatures" 的数据映射，该映射包含在 MapForce 的示例文件中。这个映射会读取一个包含温度和日期的输入文件，并生成一个输出文件，其中会为高温和低温添加分类描述。

![数据映射示例](/blog/images/main-mapping-1.png "Data mapping example")

MapForce 调试器中的断点功能对于熟悉源代码调试的开发人员来说应该会很熟悉。可以在任何输入或输出节点上设置断点，以在特定位置暂停映射执行，并且还支持条件断点。

**设置断点**

我们将通过在结果映射处设置一个断点来进行调试。具体方法是，只需右键单击图像中位于中心位置的连接箭头，即可添加断点。新添加的断点会以红色高亮显示。

![设置数据映射调试器的断点](/blog/images/set-breakpoint-3.png "Set a data mapping debugger breakpoint")

相同的右键菜单允许用户打开一个对话框，用于将该位置定义为条件断点。该函数的返回值将是“真”或“假”。我们可以设置断点，使得数据映射的执行仅在函数返回“真”时才会停止

![数据映射调试器、条件断点、对话框](/blog/images/conditional-break-dialog.png "Data mapping debugger conditional break dialog")

**交互式调试**

一个菜单选项可以启动交互式调试功能

![数据映射调试菜单](/blog/images/debug-menu.png "Data mapping debug menu")

MapForce 内置的执行引擎开始处理数据转换，并持续进行，直到达到断点并且满足断点条件。所有中间值都会以红色在数据转换设计界面上显示。对于大型、复杂的转换，中间值的显示可能会变得非常拥挤，因此我们可以将每个值移动到数据转换窗口中更方便的位置。

标粗的词语“true”表示在程序暂停执行之前，最后生成的值。

![数据映射示例，附带交互式数据映射调试器](/blog/images/main-mapping-2.png "Data mapping example with interactive data mapping debugger")

调试辅助窗口会自动打开，并提供关于执行过程中发生的所有事件的更多信息。上下文窗口会显示已从输入文件中处理的节点以及已执行的函数。

![数据映射调试器：上下文菜单](/blog/images/Context_menu-1.png "Data mapping debugger Context Menu")

“data[7]”这一条目表示已经处理了七个温度值。

“调试助手”窗口会自动显示“高级功能”中所有生成的结果，其中断点被定义的位置。对于前六个值，结果均为“假”。当第七个值生成“真”的结果时，条件满足，程序暂停执行。

![数据映射调试器；历史记录视图](/blog/images/History-capture-1.png "Data mapping debugger History view")

“历史”窗口功能非常强大。我们可以选择映射中的任何其他连接节点，然后“历史”窗口会显示一个列表，其中包含在执行过程中通过该节点的所有值。例如，我们可以选择“大于”函数的输入连接，如下所示：

![备用调试器历史记录选择](/blog/images/select-for-history-4.png "Alternate debugger History selection")

现在，历史窗口会显示所有经过该节点的值的列表

![备用调试器历史记录视图](/blog/images/History-capture-2.png "Alternate debugger History view")

在调试过程中，我们可以随时在“映射”窗口和“输出”窗口之间切换，以便查看到目前为止生成的中间结果，就像这里展示的：

![部分数据映射结果视图](/blog/images/Partial-Output-View.png "Partial Data Mapping Output View")

目前，我们有几种选择可以继续：

- 停止调试会话
- 继续执行，直到遇到下一个调试断点
- 继续通过手动步骤调试执行过程，仔细检查更多的中间值

如果在调试过程中发现映射设计存在错误或缺陷，我们可以立即停止，根据需要修改映射，然后调试修改后的版本。我们可以设置新的断点，或者选择手动单步执行的选项，以便查看每个生成的中间值，或者逐个执行逻辑计算模块。

经过几次迭代后，我们可以看到“high”这个描述是由if-else函数生成的，并且被传递给了输出组件。

![在执行了进一步的手动步骤后，使用数据映射调试器](/blog/images/high-output-5.png "Data mapping debugger after further manual steps")

我们又向前走了几步，再次检查了部分输出结果。

![更全面的数据映射输出视图](/blog/images/Output-2.png "More complete Data Mapping Output View")

现在，关于原始最高温度的详细描述已显示在第12行，并且已经生成了更多结果。

[Altova MapForce](https://www.altova.com/zh/mapforce.html) 是一款屡获殊荣的图形化数据映射、转换和集成工具，能够将各种数据格式（包括 XML、数据库、EDI、XBRL、文本文件、Excel、JSON 以及 Web 服务）进行互联互通。MapForce 的数据映射调试器是一个独特的特性，它提供了一个可视化的映射设计器，其成本仅为传统大型数据集成系统的零头。

**[立即下载完整功能的免费试用版，亲自体验一下！](https://www.altova.com/zh/download-trial.html)**
