# 调试云对象

云对象开发完成后，您可以对其进行调试，以验证云对象代码运行是否正常。

目前DevEco Studio云对象调试支持本地调用和远程调用，请根据实际场景选择使用：

* [通过本地调用方式调试云对象](#section248615546567)：在DevEco Studio调试本地开发好的云对象。支持单个调试和批量调试，并支持Run和Debug两种模式，调试功能丰富，常在云对象开发过程或问题定位过程中使用。
* [通过远程调用方式调试云对象](#section123191549587)：先将云对象部署至AGC云端，然后直接在DevEco Studio调用云端云对象。此方式主要用于测试云对象在云端的运行情况、或补充测试因各种因素限制未能在本地调用方式中发现的问题。

## 前提条件

* 请确保您已登录。
* 如果您的工程有代码逻辑涉及云对象调用云数据库，您需在调试前先[将整个云工程部署到AGC云端](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/agc-harmonyos-clouddev-deploy)，否则云端将没有相关数据及环境变量。

## 通过本地调用方式调试云对象

您可在DevEco Studio调试本地开发好的云对象，支持单个调试和批量调试，并支持Run和Debug两种模式。

* 单个调试和批量调试流程相同，区别仅在于：单个调试是一次只为一个云对象启动本地调试，之后只能调用该云对象；批量调试是一次为"cloudfunctions"目录下所有云对象启动本地调试、然后逐个调用各个云对象。
* Run模式和Debug模式的区别在于：Debug模式支持使用断点来追踪云对象的运行情况，Run模式则不支持。

下文以Debug模式下调试单个云对象"my-cloud-object"为例，介绍如何在DevEco Studio调试本地云对象。

1. 右击"my-cloud-object"云对象目录，选择"Debug 'my-cloud-object'"。 说明
   > * 如需批量调试多个云对象，右击"cloudfunctions"目录，选择"Debug Cloud Functions"，即可启动该目录下所有云对象。如"cloudfunctions"目录下同时存在云函数和云对象，将会启动所有的云函数和云对象。

   ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/33/v3/I5LRN6PSTsmnKODR-Bvz6A/zh-cn_image_0000002179338428.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=910F36874456CEF5D72812F73399CFB299B7145B3C648A737702F45E329A3983)
2. 在下方通知栏"cloudfunctions"窗口，查看调试日志。如果出现"Cloud Functions loaded successfully"，表示云对象已成功加载到本地运行的HTTP Server中，并生成对应的Function URI。 ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/e5/v3/V7b74tbTTCSgzBJ0Ym51EA/zh-cn_image_0000002179498092.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=C8EED979EE83768897795F2E791A10EDB4D7FCD754A8A3A0A796E33D9935995C)

3. 如需设置断点调试，在函数代码中选定要设置断点的有效代码行，在行号（如下图行3）后单击鼠标左键设置断点（如下图的红点）。 设置断点后，调试能够在断点处中断，并高亮显示该行。

   ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a0/v3/Z1kg59ZdSamRqSSrhqMRJg/zh-cn_image_0000002179498088.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=13FC91DE651D012C0F74BE687E976428F594107F1977B203322A4690D13B681A)
4. 在菜单栏选择"View > Tool Windows > Cloud Functions Requestor"，使用事件模拟器（Cloud Functions Requestor）触发云对象调用。 ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/8c/v3/cCWCkyX2QK2h0bOS4KHimg/zh-cn_image_0000002214704325.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=95C54602C70F7A419A786DFBD040B28A507E34AA6DF2D47A61466E51B678AA49)

5. 在弹出的"Cloud Functions Requestor"面板，配置触发事件参数。
   * Cloud Function：选择需要触发的云对象，此处以云对象"my-cloud-object"为例。
   * Environment：选择云对象调用环境。此处选择"Local"，表示本地调用。
   * Method：必填项，输入云对象的方法名称，如"add"。
   * Event：方法参数列表，JSON array格式，依次代表Method的入参。如add方法接收两个number类型的形参，num1与num2，那么填入"[1, 2]"表示构造num1=1，num2=2的请求。 注意
     >
     > 如果Method的入参中的某一个是数组[]类型，那么Event中将至少包含两层方括号，如'[[1, 2], 3]'，外层的方括号表示参数列表。

   ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/27/v3/Q4K4q-2IQ627Xu3gSvcOig/zh-cn_image_0000002214858713.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=66D9A268DC36B88E0A67E50134E5A6F4743493F0EDE2F83F248D9168F7E22B1B)
6. （可选）点击"Save"，可保存当前触发事件。 ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/54/v3/evz6V3XoRkegmvYd5nT_Ww/zh-cn_image_0000002214704333.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=FEF82D4EF472CF8CD0BF383C495E67E7512F1C5C5B0562AFDAC364E964AD66DC)

   点击右上角![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a0/v3/T-lFYjpeS5CbofwEm9dQyA/zh-cn_image_0000002179498084.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=5AD76B9BE82FE0A4CA347FD5E8C57A57A37E35D07EF86E98D7B11283A8BAE6C2)可展开保存的触发事件，后续可直接点击"Load"加载事件。对于不需要保存的触发事件，也可以点击"Delete"删除。

   ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/2a/v3/f8RocHBNQKyXmwProHDf-w/zh-cn_image_0000002179498080.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=783309CDF998B16A2ED5B6D76A8682265F5E29A6323719226A8F3286C67D5814)
7. 点击"Trigger"， 将会触发执行云对象的方法，执行结果将展示在"Result"框内。 说明
   >
   > "Result"框右侧的"Logs"面板仅用于在[通过远程调用方式调试云对象](#section123191549587)时查看日志。

   ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/04/v3/-ucB4jQuQ9-9Ezpf_Lbrpw/zh-cn_image_0000002214704357.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=A65ED7BE348EA4ED0CFE661A15D9054471F47DB40D551A0C115BD1ECE6BBB43D)
8. 点击菜单栏![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/59/v3/zN8w80VCSpmYS_9d-eG5VQ/zh-cn_image_0000002214704361.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=4F329BACD948B05863D6FBD69442638D434DAEDA472BECFE52A823077B665106)，可停止调试。
9. 根据调试结果修改云对象代码后，点击![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/94/v3/uMl4qPokSy6q8OWVeF5OJQ/zh-cn_image_0000002179338408.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=31593FD87D51A840BE9E8A46C90AB67DFDE8CD0B73780C29F7856FFFEBADFC1D)重新以Debug模式启动调试，直至没有问题。
10. 参考步骤5~9，完成云对象其他方法或其他云对象的调试。

## 通过远程调用方式调试云对象

您还可以将云对象部署至AGC云端，然后在DevEco Studio调用云端云对象，以测试云对象在云端的运行情况、或补充测试因各种因素限制未能在本地调试中发现的问题。

1. 参考[部署云对象](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/agc-harmonyos-clouddev-deploycloudobj)将需要调试的云对象部署至AGC云端。
2. 在菜单栏选择"View > Tool Windows > Cloud Functions Requestor"，使用事件模拟器（Cloud Functions Requestor）触发云对象调用。 ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/88/v3/OYdoc68dQ7C6T2fydG0jZg/zh-cn_image_0000002179338432.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=8E66214B3972D83EDA7274E13D4156F59E439E8C1BBE4541B228D01418B18A51)

3. 在弹出的"Cloud Functions Requestor"面板，配置触发事件参数。
   * Cloud Function：选择需要触发的云对象，此处依然以"my-cloud-object"为例。
   * Environment：选择云对象调用环境。此处选择"Remote"，表示远程调用。
   * Method：输入云对象的方法名称，如"add"。
   * Event：方法参数列表，JSON array格式，按顺序代表Method的入参，如add方法接收两个number类型的形参，num1与num2，那么填入"[1, 2]"表示构造num1=1，num2=2的请求，如"[1, 2]"。 注意
     >
     > 如果Method的入参中的某一个是数组[]类型，那么Event中将至少包含两层方括号，如'[[1, 2], 3]'，外层的方括号表示参数列表。

   ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/9b/v3/HHONwqS4SH2Ct3ynGAmMjw/zh-cn_image_0000002214704353.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=0DBD83D14EAC602DACFBB77B09E0DFBBCEAE75711E7B09E97FE9DA0EDA49EE73)
4. 点击"Trigger"， 将会触发执行云对象方法，执行结果将展示在"Result"框内。 ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/0c/v3/GT5yD1c8SBmqz-ubOvWMxA/zh-cn_image_0000002314529249.png?HW-CC-KV=V1&HW-CC-Date=20261016T092207Z&HW-CC-Expire=31536000000&HW-CC-Sign=CF8549A5BDFEFC5B1529688016777F7E46100AFB152691673A65E98C08C04294)

5. 点击"Logs"页签，还可查看打印的日志定位问题。修改云对象代码、重新部署云对象后再次执行远程调用，直至没有问题。
6. 参考步骤1~5，完成云对象其他方法或其他云对象的调试。

