UiPathで高度なデバックを実施する
これまでの記事で、DLLをUiPathから直接呼び出す手法をご紹介しました
本記事では、Visual Studioでブレイクポイントを設定して、高度なデバック方法をご紹介します。
開発のきっかけ
最近では当たり前ですが、昔はUiPathでカスタムライブラリを作成するには、
Visual StudioでDLLを作成し、Nuget ExplorerなどでDLLをnuget化して利用しかありませんでした。
UiPathでデバッグするにも、Immediate Panelがなかったり、現時点でもComやラムダ式をデバッグしたり
解析することができませんでした。
お約束事項(免責事項)
この記事は2020年7月時点の情報を基に作成しております。
記事の内容は私個人の見解であり、所属する組織の公式見解ではありません。
カスタムライブラリ
前回の記事で使用したサンプルのカスタムライブラリを使用します
ソース内容
前回のソースと同じものです。
今回は、Test2のメソッドを使用します。
using System.Windows;
namespace UiPathCustomLibrary
{
public static class TestClass
{
public static void Test1()
{
MessageBox.Show("Hello World");
}
public static void Test2(string message)
{
MessageBox.Show(message);
}
public static int Test3(int a, int b)
{
return a + b;
}
}
}
UiPathの実装
こちらの記事でご紹介した記事がデバッグを捕捉しやすいので、こちらの実装を流用します
https://qiita.com/takusonix/items/0ac407301570ca433556
実装(完成版)
デバッグの手法
1. ブレイクポイントの設定
DLLのソースをVisual Studioで開き、デバッグポイントにブレイクポイントを設定します。
2. ビルド
3. pdbファイル
DLLと同時にpdbファイルが作成されていることを確認します。
4. DLLとpdbファイルをUiPathプロジェクトファイルに格納
UiPathのプロジェクトフォルダにDLLと一緒に、pdbファイルも格納します
5. UiPathプロジェクトの実行
Assembly.LoadFileでDLLロードされるUiPathのプロジェクトを実行し、
MessageBoxなどで、ユーザの入力待ち状態にします。
6. プロセスのアタッチを選択
UiPathでMessageBoxが開かれている状態で、VisualStudioのデバッグから、「プロセスのアタッチ」を選択します。
7. 対象のプロセスにアタッチ
検索窓に、UiPath
と入力し、プロジェクト名または、ロボット名と一致するプロセスを選択して、右下の「アタッチ」を選択します。
8. デバッグ開始
9. ブレイクポイントで停止
10. 高度のデバッグを実施
ラムダ式を含んだ実装をイミディエイトウインドウで確認したり、
message引数の値や、その他の情報を自動パネルから確認したり
実践例
UiPathでExcelを操作する(活用編: 名前を付けて保存する[完成版])を利用して、実際にデバッグしてみます。
1. フローを作成する
2. プロセスアタッチ用のメッセージボックス追加
3. ロボ実行
4. プロセスのアタッチ
5. デバッグ開始
調査開始
a)アクティビティの引数調査
b) Comオブジェクトの調査
UiPathのデバッグでは調査できない、Comオブジェクトや動的ビューも、Visual Studioなら展開可能です。
終わりに
本投稿では、DLLと一緒にPDBファイルを配置し、VisualStudioからデバックメニューのプロセスアタッチから、UiPathのロボットを捕捉し、事前に設定したブレイクポイントで、処理を停止させる方法と実践的な調査例をご紹介しました。
もし、よければLGTMをお願いします。