本願は2020年11月16日に提出した、出願番号が202011282569.3である中国特許出願の優先権を要求し、その全部の内容を引用することで本願に含ませる。
[技術分野]
本願はコンピュータ技術分野に関し、具体的に、コンピュータ通信及びソフトウェアデバッグ技術に関する。より具体的に、本願はミニプログラムをデバッグする方法、装置、電子機器及び記憶媒体を提供する。
ミニプログラムとは、ソフトウェアに組み込まれた、ダウンロードやインストールを必要とせずに利用可能なアプリケーションプログラムである。ミニプログラムの場合であっても、稼動する前に、ミニプログラムをデバッグして、このミニプログラムに存在している文法や、ロジック的なエラーを修正する必要がある。
ミニプログラムに対するデバッグにおいて最も重要な部分は、ブレークポイントデバッグを行うこと、即ち、コードの目標位置でミニプログラムの実行を中断し、ユーザが変数の詳細に基づいてミニプログラムを修正できるように、デスクトップ側のデバッグパネル上に変数の詳細を表示することである。しかし、ブレークポイントデバッグを行う際に、ミニプログラムは中断状態にあり、デバッグツールのデバッグコマンドに応答できないので、デバッグが困難になり、デバッグ効率の低下、及びデバッグ効果の悪化に繋がる。
ミニプログラムをデバッグする方法、装置、電子機器及び記憶媒体を提供する。
第1の局面によれば、複数のデバッグモジュールを含むミニプログラムをデバッグする方法であって、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択することと、ミニプログラムを実行し、ミニプログラムが各目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断することと、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成することと、を含む、ミニプログラムをデバッグする方法を提供する。
第2の局面によれば、複数のデバッグモジュールを含むミニプログラムをデバッグする方法であって、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして指示する第1のデバッグコマンドを送信することと、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信することと、目標テストモジュールのデバッグ結果を受信することと、を含む、ミニプログラムをデバッグする方法を提供する。
第3の局面によれば、ミニプログラムをデバッグする装置であって、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するための選択モジュールと、ミニプログラムを実行し、ミニプログラムが各目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断するための第1の中断モジュールと、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成するための第1のデバッグモジュールと、を含む、ミニプログラムをデバッグする装置を提供する。
第4の局面によれば、複数のデバッグモジュールを含むミニプログラムをデバッグする装置であって、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するように指示する第1のデバッグコマンドを送信するための第1の送信モジュールと、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信するための第2の送信モジュールと、目標テストモジュールのデバッグ結果を受信するための第1の受信モジュールと、を含む、ミニプログラムをデバッグする装置を提供する。
第5の局面によれば、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に接続するメモリとを含む電子機器であって、メモリには、少なくとも1つのプロセッサによって実行可能なコマンドが記憶されており、コマンドは少なくとも1つのプロセッサによって実行されることで、少なくとも1つのプロセッサに本願により提供されるミニプログラムをデバッグする方法を実行させる電子機器を提供する。
第6の局面によれば、コンピュータに本願により提供されるミニプログラムをデバッグする方法を実行させるためのコンピュータコマンドが記憶されている非一時的なコンピュータ読取可能な記憶媒体を提供する。
第7の局面によれば、コンピュータプログラムを含むコンピュータプログラム製品であって、コンピュータプログラムは、前記コンピュータによって実行されることで、上記のような方法を実現するコンピュータプログラム製品を提供する。
この部分で説明した内容は、本願の実施例の肝心な又は重要な特徴を表記するためのものでもなく、本願の範囲を限定するためのものでもないと理解すべきである。本願の他の特徴は、以下の明細書によって理解し易くなるであろう。
図面は、本技術案がよりよく理解されるためのものであり、本願に対する限定を構成しない。
図1は、本願の一実施例による、ミニプログラムをデバッグする方法及び装置を応用できる例示的なシステム構造である。
図2は、本願の一実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図3は、本願の一実施例による、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグする方法のフローチャートである。
図4は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図5は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図6は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図7は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図8は、本願の一実施例による、シミュレーション環境でのミニプログラムをデバッグする方法のフローチャートである。
図9は、本願の一実施例による、実際の環境でのミニプログラムをデバッグする方法のフローチャートである。
図10は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図11は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図12は、本願の一実施例による、ミニプログラムをデバッグする方法の電子機器のブロック図である。
以下、図面に合わせて本願の例示的な実施例について説明する。その中、理解に役立つように本願の実施例の各詳細を含み、これらはあくまで例示的なものであると理解すべきである。そのため、当業者は、本願の範囲及び趣旨から逸脱せずに、ここで説明した実施例に対して、様々な変更や、修正をなし得ることを認識すべきである。同様に、明確及び簡明のために、以下の説明において公知の機能及び構成に対する説明を省略している。
ミニプログラムは異なるOSプラットフォーム(例えば、Android、IOS、Webブラウザ等)において実行されることができ、OSプラットフォームとデスクトップ側のデバッグツールとの間のインタラクションには幾つかの制限がある。例えば、IOSオペレーティングシステムの制限によって、IOS端末はデスクトップ側のデバッグツールと直接に通信することができない。つまり、携帯電話側の実行環境のコードブレークポイント及びデバッグ機能を実現できない。
本願を実現する過程において、発明者は、デスクトップ側の開発ツールにおいてミニプログラムの実行をシミュレートした後、デバッグプログラムとシミュレーションミニプログラムとの間の通信により、ミニプログラムのデバッグを完了させることができるという知見を得た。
しかし、実機の実行環境においても、シミュレーション実行環境においても、ミニプログラムをデバッグする際には、デバッグツールとミニプログラムを実行するプロセスとがコマンドインタラクションを行う必要がある。一方、ミニプログラムのデバッグにおいて最も主要なことはブレークポイントデバッグを行うことであり、ブレークポイントデバッグを行う際に、ミニプログラムは中断状態にあり、デバッグツールのコマンドに応答できないので、デバッグが困難になり、デバッグ効率の低下、及びデバッグ効果の悪化に繋がる。
図1は本願の一実施例による、ミニプログラムをデバッグする方法及び装置を応用できる例示的なシステム構造100である。図1に示されたものは単に本願の実施例のシステム構造を応用できる例示に過ぎず、本願の技術的内容に対する当業者の理解を容易にするためのものであり、本願の実施例が他の機器、システム、環境又は場面に用いることができないことを意味していないことに注意すべきである。
図1に示すように、この実施例によるシステム構造100は、端末機器110と、端末機器120とを含んでもよい。端末機器110と端末機器120との間は、整合された外付インタラクションインターフェースにより接続されて直接に通信してもよく、クラウドサーバによる転送を通じて間接に通信してもよい。
端末機器120にはミニプログラムが実行されていてもよく、端末機器110にはミニプログラム開発用の開発ツールが含まれており、開発ツールにはミニプログラムの実行をシミュレートするためのシミュレータ111、及びミニプログラムをデバッグするためのデバッガ112が含まれており、デバッガ112はユーザにデータを操作、照会するためのデバッグパネルを提供することができる。
ユーザは端末機器120のミニプログラムをデバッグする必要がある場合に、端末機器110と端末機器120との直接なインタラクションにより実現してもよく、端末機器110のデバッガ112とシミュレータ111とのインタラクションにより実現してもよく、クラウドサーバによる転送を通じて端末機器110と端末機器120とをインタラクトさせることによって実現してもよい。例えば、Androidシステムの端末は、システムがオープンソースであるため、デスクトップ側のデバッガ112と直接に通信することができるので、Androidシステムのミニプログラムは、直接に実機の実行環境でデバッグされてもよい。また、例えば、IOSシステムの端末はデスクトップ側のデバッガ112と直接に通信することができないため、シミュレータ111においてミニプログラムの実行をシミュレートし、シミュレータ111とデバッガ112とのインタラクションによりミニプログラムをデバッグすることができる。さらに、例えば、IOS端末の実機デバッグを実現するために、クラウドサーバによる転送を通じてデバッガ112とIOS端末との間の通信を実現して、ミニプログラムのデバッグを実現してもよい。さらに、例えば、Webブラウザにおけるミニプログラムもデバッガ112と直接に通信することができるため、Webブラウザにおけるミニプログラムをデバッグしてもよい。したがって、本願はマルチプラットフォームのミニプログラムのデバッグを実現できる。
例示的に、ユーザが端末機器110のデバッガ112により提供されたデバッグパネル上でクリックし、又はデバッグコマンドを入力することで、デバッガ112はデバッグコマンドを端末機器120に送信し、端末機器120はデバッグコマンドを受信した後、ミニプログラムをデバッグして、デバッグ結果を生成し、その後、デバッグ結果をデバッガ112にフィードバックして、デバッガ112のデバッグパネル上に表示することができる。
例示的に、シミュレータ111はミニプログラムの実行をシミュレートすることができるため、ユーザがデバッガ112のデバッグパネル上でデバッグコマンドを入力又はクリックした後、デバッガ112はデバッグコマンドをシミュレータ111に送信し、シミュレータ111はデバッグコマンドを受信した後、ミニプログラムをデバッグして、デバッグ結果を生成し、その後、デバッグ結果をデバッガ112にフィードバックし、デバッガ112のデバッグパネル上に表示することができる。
例示的に、ユーザがデバッグパネル上でクリック又は入力したデバッグコマンドは、ある変数aの値を照会することであってもよく、端末機器102がフィードバックしたデバッグ結果は、この変数の値、例えばa=123であってもよい。
図2は、本願の一実施例によるミニプログラムをデバッグする方法のフローチャートである。
図2に示すように、このミニプログラムをデバッグする方法200は、操作S210~操作S230を含んでもよい。
操作S210において、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択する。
本願の実施例によれば、デバッグしようとするミニプログラムについて、ミニプログラムに幾つかのデバッグコードを書き込むことで、書き込まれたデバッグコードによってミニプログラムを複数のデバッグモジュールに分け、ミニプログラムに対するデバッグを各デバッグモジュールに対するデバッグに変換することができる。例示的に、実際の必要に応じて、ブレークポイントデバッグを必要とする位置にデバッグコードを書き込むことで、ミニプログラムが各デバッグモジュールまで実行される場合、ブレークポイントデバッグを行うようにすることができ、複数のデバッグモジュールには実行順序がある。
例示的に、デバッグモジュールは、ミニプログラムの2行目、3行目、5行目、6行目、及び9行目のいずれにおいても、ブレークポイントデバッグを必要とするデバッグモジュールを有するとする。ユーザは、そのうちの2行目、3行目及び9行目を今回のデバッグの目標デバッグモジュールとして選択してもよい。
具体的に、GoogleのオープンソースのChromeデバッグパネルをデバッガとして採用してもよい。ユーザが、開発ツールで2行目、3行目、及び9行目を選択した後、デバッグパネル上でブレークポイントデバッグを開始するコマンドをクリックすることで、デバッガはコマンドをシミュレータ又は実際の実行端末に送信することができる。
実機の実行環境で、デバッガはコマンドを実際の実行端末に送信し、実機の実行環境で、デバッガはコマンドを開発ツールにおけるシミュレータに送信することを指摘しておく。ここで、ミニプログラム開発ツールは、ミニプログラムをシミュレートするシミュレータを提供でき、且つ、シミュレータのブレークポイントデバッグ機能に対するサポート程度がよい。
本願の実施例によれば、ミニプログラムの実行環境はシミュレータ又は実際の実行端末内の1つのスレッドにあってもよく、このスレッドは例えば第1のスレッドである。シミュレータ又は実際の実行端末はデバッグコマンドを受信した後、第1のスレッドにユーザにより選択された2行目、3行目及び9行目の位置情報を記憶することで、2行目、3行目及び9行目のデバッグモジュールが目標デバッグモジュールであることを示すことができる。
操作S220において、ミニプログラムを実行して、ミニプログラムが各目標デバッグモジュールまで実行された時に、目標デバッグモジュールを中断する。
本願の実施例によれば、ミニプログラムが各デバッグモジュールまで実行された時に、デバッグモジュールはその自体が所在する位置と、第1のスレッドに格納された目標デバッグモジュールの位置とを比較することで、自体が目標デバッグモジュールであるか否かを判断する。目標デバッグモジュールである場合、ユーザが自体に対してブレークポイントデバッグを実施しようとすることが分る。この場合、まず、ミニプログラムの現在の実行状態データをデバッガに送信してもよい。実行状態データには、例えば、現在何行目まで実行されたか、まだ何行が残っているか等の位置情報が含まれてもよい。現在の実行位置の幾つかの具体的な変数情報等がさらに含まれてもよい。デバッガは、これらの実行状態データを受信した後、ユーザが照会できるようにデバッグパネル上に表示する。
本願の実施例によれば、現在の目標デバッグモジュールは、現在の実行状態データをデバッガに送信した後、ユーザがブレークポイントデバッグ操作を行うように、実行を中断する必要がある。例示的に、シミュレータにおいて、第1のスレッドは、workerスレッドであってもよく、workerスレッドは、JavaScript(登録商標)のためにマルチスレッド環境を作ることで生成された、役割を果たすための複数のスレッドの1つである。workerスレッドは、Atomics.wait方法を使用してミニプログラム、即ち、現在の目標デバッグモジュールを中断してもよい。実際のクライアントでは、ブレークポイントを実現可能な端能力を使用してミニプログラムの中断を実現してもよい。ただし、端能力とは、端末が実現可能な能力であり、ソフトウェアプログラムにより実現されてもよく、端能力は、メッセージ伝達を実現するメッセージ端能力等をさらに含んでもよい。
操作S230において、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成する。
本願の実施例によれば、ミニプログラムは中断された後、デバッガのデバッグコマンドを待つ。しかし、ミニプログラムが中断されているため、デバッガにより直接送信されたコマンドには応答できない。本願の実施例では、シミュレータ又は実際のクライアントにデバッガのデバッグコマンドを受信するための第2のスレッドを設けており、その後、第2のスレッドはデバッグコマンドを記憶し、例えば、所定の記憶空間に記憶することができる。その後、第1のスレッドへウェイクアップコマンドを送信して、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶されたデバッグコマンドを読み取り、そしてデバッグコマンドに応じてデバッグ操作を行って、対応するデバッグ結果を生成することができる。
本願の実施例によれば、第2のスレッドの主要な作用は、第1のスレッドとデバッガとの間でコマンド及びメッセージの記憶及び転送を実現することである。シミュレータにおいて、第2のスレッドはworkerスレッドの一種であってもよい。実機の実行環境では、メッセージ伝達を実現可能な端能力を使用して実現されてもよい。
例示的に、デバッグコマンドは、ある変数aの値を取得するように指示するものであってもよく、目標デバッグモジュールは、現在のフィールドで変数aの値を求めてから、変数aの値を第2のスレッドにフィードバックしてもよく、第2のスレッドは変数aの値をデバッガにフィードバックし、デバッガがそれをユーザに表示してもよい。デバッグコマンドは、目標デバッグモジュールにおけるある変数bの値を設定するものであってもよく、デバッグコマンドにはb=456の式が含まれてもよく、目標デバッグモジュールは、現在のフィールドでの変数bの値を456に設定し、その後、b=456の値設定成功のメッセージを第2のスレッドに送信し、第2のスレッドはメッセージをデバッガに転送する。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは中断を継続し、新たなコマンドを待つ。
本願の実施例によれば、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択し、ミニプログラムを実行し、ミニプログラムが各目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断し、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成する。目標デバッグモジュールまで実行された時に中断してデバッグコマンドを待ち、デバッグコマンドが到着した後に目標デバッグモジュールをウェイクアップしてデバッグするため、ミニプログラムのブレークポイントデバッグを実現し、デバッグ効率及びデバッグ効果を向上させることができる。
本願の実施例によれば、ミニプログラムをデバッグする方法は、受信された第2のデバッグコマンドを記憶し、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成することをさらに含む。
具体的に、受信された第2のデバッグコマンドを記憶してウェイクアップコマンドを生成することは、第2のスレッドで行われる。第2のスレッドは、デバッガのデバッグコマンドを受信した後、デバッグコマンドを記憶してもよい。例示的に、シミュレータでは、例えば、SharedArrayBuffer方法を使用してコマンド記憶を実現してもよく、SharedArrayBufferは、1つの共用内部メモリを表してもよく、実際の実行端末では、端末の内部メモリを共用内部メモリとして使用してもよい。第1のスレッド及び第2のスレッドは、この共用内部メモリを通じて通信することができる。第2のスレッドは、デバッグコマンドを共用内部メモリに記憶した後、第1のスレッドへウェイクアップコマンドを送信し、中断箇所の目標デバッグモジュールをウェイクアップする。例示的に、シミュレータでは、Atomics.notify方法を使用してworkerスレッドをウェイクアップしてもよい。実際の実行端末では、ウェイクアップ機能を実現可能な端能力を使用して目標デバッグモジュールをウェイクアップしてもよい。
図3は本願の一実施例による、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグする方法のフローチャートである。
図3に示すように、この方法は操作S331~操作S332を含んでもよい。
操作S331において、ウェイクアップコマンドに応じて、中断された目標デバッグモジュールをウェイクアップする。
操作S332において、記憶された第2のデバッグコマンドを取得し、記憶された第2のデバッグコマンドに応じて、ウェイクアップされた目標デバッグモジュールをデバッグする。
本願の実施例によれば、第2のスレッドはシミュレータにおいてAtomics.notify方法を利用してworkerスレッドにおける目標デバッグモジュールをウェイクアップしてもよい。実際の実行端末では、ウェイクアップ機能を実現可能な端能力を使用して目標デバッグモジュールをウェイクアップしてもよい。目標デバッグモジュールがウェイクアップされた後、まず共用内部メモリにおけるデバッグコマンドを読み取り、その後、デバッグ操作を行う。
本願の実施例によれば、第2のスレッドは、受信したデバッグコマンドを共用内部メモリに記憶し、その後、第1のスレッドをウェイクアップし、第1のスレッドがウェイクアップされた後に共用内部メモリにおけるコマンドを読み取り、デバッグを行う。第1のスレッド及び第2のスレッドは、共用内部メモリを通じて通信可能であり、これによって目標デバッグモジュールがブレークポイントデバッグを行うことができるようになる。
図4は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図4に示すように、この方法は、操作S410~操作S420を含んでもよい。
操作S410において、デバッグ結果をフィードバックし、目標デバッグモジュールを再度中断して次の第2のデバッグコマンドを待つ。
操作S420において、受信された次の第2のデバッグコマンドに応じて目標デバッグモジュールを継続してデバッグする。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは継続して中断して、新たなコマンドを待つ。新たなコマンドは、現在の目標デバッグモジュールを継続してデバッグする第2のデバッグコマンドであってもよく、第2のスレッドがデバッガの新たなデバッグコマンドを受信した後、新たなデバッグコマンドを共用内部メモリに記憶する。その後、第1のスレッドへウェイクアップコマンドを送信して、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶された新たなデバッグコマンドを読み取り、その後、新たなデバッグコマンドに応じてデバッグ操作を継続して行って、新たなデバッグ結果を生成してもよい。その後、新たなデバッグ結果を第2のスレッドにフィードバックし、第2のスレッドは新たなデバッグ結果をデバッガに送信し、デバッガは新たなデバッグ結果をユーザに表示する。
例示的に、ユーザがデバッガを通じて変数aの値を取得するコマンドを送信した後、目標デバッグモジュールはデバッグを経てa=123をフィードバックし、ユーザはa=123を確認した後、さらにデバッガを通じてa=456のコマンドを送信し、目標デバッグモジュールはデバッグを経てaの値を456に設定し、その後、a=456のデバッグ結果をフィードバックする。
現在の目標デバッグモジュールが新たなデバッグ結果a=456をフィードバックした後、現在の目標デバッグモジュールは継続して中断し、次のコマンドを待つことを指摘しておく。
図5は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図5に示すように、この方法は操作S510~操作S520を含んでもよい。
操作S510において、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第3のデバッグコマンドを待つ。
操作S520において、受信された第3のデバッグコマンドに応じて現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールまで、ミニプログラムを継続して実行する。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは継続して中断して、新たなコマンドを待つ。新たなコマンドは、現在の目標デバッグモジュールを終了し、その後、次の目標デバッグモジュールまで実行してデバッグするように指示する第3のデバッグコマンドであってもよい。この次のは、現在の目標デバッグモジュールの後の1つであってもよいし、ユーザにより指定された1つであってもよい。例えば、現在の目標デバッグモジュールは、2行目のデバッグモジュールであってもよく、次のは、3行目のデバッグモジュールであってもよいし、ユーザにより指定された、例えば9行目の目標デバッグモジュールであってもよい。
本願の実施例によれば、第2のスレッドはデバッガの第3のデバッグコマンドを受信した後、第3のデバッグコマンドを共用内部メモリに記憶する。その後、第1のスレッドへウェイクアップコマンドを送信して、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶された第3のデバッグコマンドを読み取り、その後、第3のデバッグコマンドに応じて現在デバッグモジュールを終了し、次の目標デバッグモジュール、例えば、9行目の目標デバッグモジュールまで、ミニプログラムを継続して実行し、そして9行目の実行状態データを第2のスレッドに送信して、第2のスレッドがそれをデバッガに送信するようにする。その後、9行目の目標デバッグモジュールの実行を中断し、当該モジュールをデバッグするコマンドを待つ。
図6は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図6に示すように、この方法は操作S610~操作S620を含んでもよい。
操作S610において、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第4のデバッグコマンドを待つ。
操作S620において、受信された第4のデバッグコマンドに応じて現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルして、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行する。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは継続して中断し、新たなコマンドを待つ。新たなコマンドは、すべての目標デバッグモジュールのブレークポイントデバッグを終了するように指示する第4のデバッグコマンドであってもよい。
本願の実施例によれば、第2のスレッドはデバッガの第4のデバッグコマンドを受信した後、第4のデバッグコマンドを共用内部メモリに記憶する。そして、第1のスレッドへウェイクアップコマンドを送信し、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶された第4のデバッグコマンドを読み取り、その後、第4のデバッグコマンドに応じて現在デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルして、目標デバッグモジュールを選択してブレークポイントデバッグを行う第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行する。
例示的に、第1のスレッドは第4のデバッグコマンドを読み取りした後、現在の目標デバッグモジュールを終了し、2行目、3行目及び9行目のデバッグモジュールを目標デバッグモジュールとして選択したことをキャンセルする。その後、第2のスレッドへ2行目、3行目及び9行目のデバッグモジュールを目標デバッグモジュールとして選択したことをキャンセルする解放メッセージを送信し、第2のスレッドは解放メッセージをデバッガに送信し、デバッガはそれをユーザに表示し、ユーザは非ブレークポイントデバッグを継続して行うことができる。
図7は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図7に示すように、このミニプログラムをデバッグする方法700は操作S710~操作S730を含んでもよい。
操作S710において、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして指示する第1のデバッグコマンドを送信する。
本願の実施例によれば、デバッグしようとするミニプログラムについて、ミニプログラムに幾つかのデバッグコードを書き込むことで、書き込まれたデバッグコードによってミニプログラムを複数のデバッグモジュールに分け、ミニプログラムに対するデバッグを各デバッグモジュールに対するデバッグに変換することができる。例示的に、実際の必要に応じて、ブレークポイントデバッグを必要とする位置にデバッグコードを書き込むことで、ミニプログラムが各デバッグモジュールまで実行される場合、ブレークポイントデバッグを行うことができる。
例示的に、ユーザは、ブレークポイントデバッグを実施しようとする位置情報を選択でき、ユーザにより選択された位置のデバッグモジュールは目標デバッグモジュールとなる。例えば、ユーザが2行目、3行目及び9行目を選択すると、2行目、3行目及び9行目のデバッグモジュールは目標デバッグモジュールとなる。
本願の実施例によれば、ユーザはデバッグを必要とする位置を選択した後、デバッグパネル上でブレークポイントデバッグを開始するコマンドをクリックすることができ、デバッガはユーザにより選択されたブレークポイントデバッグを必要とする位置情報が含まれるコマンドをデバッグ対象側のシミュレータ又は実際の実行端末に送信してもよい。
操作S720において、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信する。
操作S730において、目標テストモジュールのデバッグ結果を受信する。
例示的に、デバッガがシミュレータ又はクライアントから送信された2行目の実行データを受信したことは、ミニプログラムが2行目まで実行され、且つ中断したことを意味する。ユーザはデバッグパネル上で例えば変数の値を照会する等のデバッグコマンドをクリック又は入力することができ、デバッガはデバッグコマンドをデバッグ対象側のシミュレータ又はクライアントに送信する。デバッグ対象側はデバッグコマンドに応答してデバッグ結果を生成した後、デバッグ結果をデバッガにフィードバックしてもよく、デバッガは、ユーザが照会できるように、デバッグ結果をユーザに表示する。
本願の実施例によれば、第1のデバッグコマンドを送信して、コマンドで前記複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして指示し、前記ミニプログラムが前記目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、前記目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信し、前記目標テストモジュールのデバッグ結果を受信する。第1のコマンドを送信して、ミニプログラムが目標デバッグモジュールまで実行された時に中断してデバッグコマンドを待つように指示し、その後、第2のデバッグコマンドを送信して、目標デバッグモジュールをウェイクアップしてデバッグするため、ミニプログラムのブレークポイントデバッグを実現し、デバッグ効率及びデバッグ効果を向上させることができる。
本願の実施例によれば、このミニプログラムをデバッグする方法700は、フィードバックされたデバッグ結果を受信したことに応答して、第3のデバッグコマンド及び第4のデバッグコマンドのうちの少なくとも1つを送信することをさらに含んでもよく、第3のデバッグコマンドは、現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールまで、ミニプログラムを継続して実行するように指示し、第4のデバッグコマンドは、現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルして、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行するように指示する。
本願の実施例によれば、このミニプログラムをデバッグする方法700は、目標デバッグモジュールに対する選択がキャンセルされたことを示す解放メッセージを受信することをさらに含んでもよい。
本願の実施例によれば、デバッガは、さらに第3のデバッグコマンドを送信して、デバッグ対象側が現在の位置のブレークポイントデバッグを終了し、指定された位置に遷移してブレークポイントデバッグを行うように指示してもよい。例えば、第3のデバッグコマンドは2行目のデバッグを終了し、9行目に遷移してブレークポイントデバッグを行うように指示する。
本願の実施例によれば、さらに第4のデバッグコマンドを送信して、デバッグ対象側が現在の位置のブレークポイントデバッグを終了するとともに、目標デバッグモジュールに対する選択をキャンセルして、ブレークポイントデバッグを終了し、非ブレークポイントデバッグに回復するように指示してもよい。第4のデバッグコマンドを送信した後、デバッグ対象側から送信された、目標デバッグモジュールに対する選択がキャンセルされることをコマンドする解放メッセージを受信することになり、非ブレークポイントデバッグを継続して行うことができる。
図8は本願の一実施例による、シミュレーション環境でのミニプログラムをデバッグする方法のフローチャートである。
図8に示すように、この方法は操作S8001~操作S8027を含む。
操作S8001において、デバッガはブレークポイントデバッグを開始する第1のコマンドをシミュレータの第2のスレッドに送信し、第2のスレッドは第1のコマンドをシミュレータの第1のスレッドに送信する。ただし、コマンドにはユーザにより選択された、ブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報が含まれている。
例示的に、第1のスレッドはworkerスレッドであってもよく、第2のスレッドは制御プログラムであってもよく、ミニプログラムはworkerスレッドで実行される。ユーザにより選択されたブレークポイントデバッグを必要とする目標デバッグモジュールは、2行目のデバッグモジュール、3行目のデバッグモジュール及び9行目のデバッグモジュールであってもよい。
操作S8002において、第1のスレッドはユーザにより選択されたブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報をバッファリングする。
例示的に、データセット[2、3、9]として記憶されてもよい。
操作S8003において、ミニプログラムが目標デバッグモジュールまで実行された後、現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をデバッガに送信する。
例示的に、ミニプログラムが2行目の目標デバッグモジュールまで実行された後、2行目の目標デバッグモジュールは、自体が所在する行数2とデータセット[2、3、9]における行数とを比較して、データセット[2、3、9]に自体が所在する行数2が存在することを確認した場合、worker. postMessage方法によって現在位置の実行状態情報を第2のスレッドに送信し、第2のスレッドを通じてデバッガに転送してもよい。
操作S8004において、デバッガは現在のブレークポイントの実行状態データを表示するとともに、ユーザ操作できるように、操作ボタンを表示する。
操作S8005において、目標デバッグモジュールは実行を中断し、現在のブレークポイントが有効となり、デバッグコマンドを待つ。
例示的に、目標デバッグモジュールは、Atomics.wait(SharedArrayBuffer)の方法によって実行を中断し、第2のスレッドによりSharedArrayBuffer共用内部メモリに記憶されたコマンドを待つ。
操作S8006において、ユーザはデバッガにより提供されるデバッグパネル上で操作して、変数の結果を照会する。
操作S8007において、デバッガは変数を求める第2のコマンドを第2のスレッドに送信し、第2のコマンドにはユーザが照会しようとする変数名が含まれている。
操作S8008において、第2のスレッドは、第2のコマンドを共用内部メモリに記憶し、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成して、ブレークポイントにおける目標デバッグサブモジュールをウェイクアップする。
例示的に、第2のスレッドは第2のコマンドをSharedArrayBufferに記憶し、その後、Atomics.notify(SharedArrayBuffer)の方法によってウェイクアップコマンドを生成して、目標デバッグモジュールをウェイクアップする。
操作S8009において、目標デバッグモジュールは共用内部メモリにおける第2のコマンドを読み取り、変数の値を求める。
操作S8010において、目標デバッグモジュールはデバッグ結果、即ち、変数の算出結果を第2のスレッドに送信し、第2のスレッドはそれをデバッガに転送する。
例示的に、目標デバッグモジュールは、worker. postMessage方法によって、変数の算出結果を第2のスレッドに送信する。
操作S8011において、目標デバッグモジュールは、現在のブレークポイントのコード内でループする。
例示的に、デバッグモジュールは、1つのwhileループにあってもよく、whileループにおいてはこのwhileループから抜ける条件を設置して、条件を満たすと現在のwhileから抜け、そうでなければ、現在の目標デバッグモジュールのwhileループを継続するようにしてもよい。例えば、falseをフィードバックすることでループから抜けように、trueをフィードバックすることでwhileループを継続するように設定してもよい。
操作S8012において、目標デバッグモジュールは実行を中断してブレークポイントを保持する。
例示的に、目標デバッグモジュールは、Atomics.wait(SharedArrayBuffer)の方法によって実行を中断し、第2のスレッドによりSharedArrayBuffer共用内部メモリに記憶されたコマンドを待つ。
操作S8013において、ユーザはデバッグパネル上で変数の算出結果を照会する。
操作S8014において、ユーザはデバッグパネル上でクリックして次の目標デバッグモジュールに遷移する。
例示的に、次の目標デバッグモジュールは、現在の目標デバッグモジュールの直後のものであってもよく、ユーザにより指定された位置における目標デバッグモジュールであってもよい。
操作S8015において、デバッガは現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールに遷移する第3のデバッグコマンドを第2のスレッドに送信する。
操作S8016において、第2のスレッドは第3のデバッグコマンドを共用内部メモリに書き込み、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成して、ブレークポイントにおける目標デバッグサブモジュールをウェイクアップする。
例示的に、第2のスレッドは第3のコマンドをSharedArrayBufferに記憶し、その後、Atomics.notify(SharedArrayBuffer)の方法によってウェイクアップコマンドを生成して、目標デバッグモジュールをウェイクアップする。
操作S8017において、目標デバッグモジュールは共用内部メモリにおける第3のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
例示的に、trueをフィードバックすることで現在の目標デバッグモジュールのwhileループから抜けて、現在の目標デバッグモジュールの実行を終了してもよい。
操作S8018において、次のブレークポイントの目標デバッグモジュールまで、ミニプログラムを継続して実行する。
操作S8019において、目標デバッグモジュールは現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をデバッガに送信する。
操作S8020において、目標デバッグモジュールは実行を中断し、現在のブレークポイントが有効となり、デバッグコマンドを待つ。
操作S8021において、ユーザはデバッグパネル上でクリックしてすべてのブレークポイントデバッグの操作を終了する。
操作S8022において、デバッガはブレークポイントデバッグを終了する第4のコマンドを第2のスレッドに送信する。
操作S8023において、第2のスレッドは第4のコマンドを共用内部メモリに書き込み、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成して、ブレークポイントにおける目標デバッグサブモジュールをウェイクアップする。
操作S8024において、目標デバッグモジュールは共用内部メモリにある第4のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
操作S8025において、第1のスレッドはブレークポイントを解放するメッセージを第2のスレッドに送信し、第2のスレッドはブレークポイントを解放するメッセージをデバッガに送信する。
操作S8026において、デバッガは非ブレークポイントデバッグ状態に回復する。
操作S8027において、第1のスレッドにおけるミニプログラムは継続して実行され、後でユーザが目標デバッグモジュールを選択してブレークポイントデバッグを行う第1のコマンドを新たに受信すると、上記過程を繰り返す。後で第1のコマンドを受信しないと、終了するまで継続して実行する。
図9は本願の一実施例による、実際の環境でのミニプログラムをデバッグする方法のフローチャートである。
図9に示すように、この方法は操作S9001~操作S9027を含む。
本願の実施例によれば、実際の環境では、ミニプログラムが実際のクライアントコンピューターで実行されるため、デバッガとクライアントコンピューターとのインタラクションはクラウドサーバを通じて転送されてもよい。
操作S9001において、デバッガはブレークポイントデバッグを開始する第1のコマンドをクラウドサーバに送信し、クラウドサーバは第1のコマンドをクライアントの第2のスレッドに送信し、第2のスレッドは第1のコマンドをクライアントの第1のスレッドに送信する。ただし、コマンドには、ユーザにより選択された、ブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報が含まれている。
例示的に、第1のスレッドと第2のスレッドのいずれもクライアントにおけるミニプログラムをデバッグするためのアプリケーションプログラムであってもよく、ミニプログラムは第1のスレッド中で実行される。
操作S9002において、第1のスレッドはユーザにより選択されたブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報をバッファリングする。
操作S9003において、ミニプログラムが目標デバッグモジュールまで実行された後、現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9004において、デバッガは現在の位置の実行状態データを表示するとともに、ユーザが操作できるように操作ボタンを表示する。
操作S9005において、目標デバッグモジュールは実行を中断し、現在のブレークポイントが有効となり、デバッグコマンドを待つ。
例示的に、目標デバッグモジュールは端能力を通じて中断を実現してもよく、クライアントの端能力は各種の能力を実現可能な方法であってもよく、プログラミングすることで実現される。
操作S9006において、ユーザはデバッガにより提供されるデバッグパネル上で操作して変数の結果を照会する。
操作S9007において、デバッガは変数を求める第2のコマンドをクラウドサーバに送信し、クラウドサーバはそれをクライアントの第2のスレッドに転送し、第2のコマンドには、ユーザが照会しようとする変数名が含まれている。
操作S9008において、第2のスレッドは第2のコマンドを共用内部メモリに記憶し、端能力を通じて目標デバッグモジュールをウェイクアップする。
操作S9009において、目標デバッグモジュールは共用内部メモリにおける第2のコマンドを読み取り、変数の値を求める。
操作S9010において、目標デバッグモジュールはメッセージ伝達端能力を通じて、変数の算出結果を第2のスレッドに送信し、第2のスレッドは算出結果をクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9011において、目標デバッグモジュールは、現在のブレークポイントのコード内でループする。
操作S9012において、目標デバッグモジュールは、ブレークポイント端能力を通じて実行を中断して、ブレークポイントを保持する。
操作S9013において、ユーザはデバッグパネル上で変数の算出結果を照会する。
操作S9014において、ユーザはデバッグパネル上でクリックして次の目標デバッグモジュールに遷移する。
例示的に、次の目標デバッグモジュールは現在の目標デバッグモジュールの直後のものであってもよく、ユーザにより指定された位置における目標デバッグモジュールであってもよい。
操作S9015において、デバッガは現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールに遷移する第3のデバッグコマンドをクラウドサーバに送信し、クラウドサーバはそれをクライアントの第2のスレッドに転送する。
操作S9016において、第2のスレッドは第3のデバッグコマンドを共用内部メモリに書き込み、端能力を通じて目標デバッグモジュールをウェイクアップする。
例示的に、共用内部メモリはクライアントの内部メモリである。
操作S9017において、目標デバッグモジュールは共用内部メモリにおける第3のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
操作S9018において、次のブレークポイントの目標デバッグモジュールまで、ミニプログラムを継続して実行する。
操作S9019において、目標デバッグモジュールは現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9020において、目標デバッグモジュールは実行を中断し、ブレークポイントが有効となり、デバッグコマンドを待つ。
操作S9021において、ユーザはデバッグパネル上でクリックしてすべてのブレークポイントデバッグの操作を終了する。
操作S9022において、デバッガはブレークポイントデバッグを終了する第4のコマンドを第2のスレッドに送信する。
操作S9023において、第2のスレッドは第4のコマンドを共用内部メモリに書き込み、端能力を通じて第1のスレッドをウェイクアップする。
操作S9024において、目標デバッグモジュールは共用内部メモリにある第4のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
操作S9025において、第1のスレッドはブレークポイントを解放するメッセージをメッセージ伝達端能力を通じて第2のスレッドに送信し、第2のスレッドはブレークポイントを解放するメッセージをクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9026において、デバッガは非ブレークポイントデバッグ状態に回復する。
操作S9027において、第1のスレッドにおけるミニプログラムは継続して実行され、後でユーザが目標デバッグモジュールを選択してブレークポイントデバッグを行う第1のコマンドを新たに受信すると、上記過程を繰り返す。後で第1のコマンドを受信しないと、終了するまで継続して実行する。
図10は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図10に示すように、このミニプログラムをデバッグする装置1000は、選択モジュール1001と、第1の中断モジュール1002と、第1のデバッグモジュール1003とを含んでもよい。
選択モジュール1001は、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するためのものである。
第1の中断モジュール1002は、ミニプログラムを実行し、ミニプログラムが各目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断するためのものである。
第1のデバッグモジュール1003は、第2のデバッグコマンドに応じて中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、処理モジュールをさらに含んでもよい。
処理モジュールは、受信された第2のデバッグコマンドを記憶し、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成するためのものである。
第1のデバッグモジュール1003は、第1のウェイクアップ手段及びデバッグ手段を含む。
第1のウェイクアップ手段は、ウェイクアップコマンドに応じて中断された目標デバッグモジュールをウェイクアップするためのものである。
デバッグ手段は、記憶された第2のデバッグコマンドを取得し、記憶された第2のデバッグコマンドに応じてウェイクアップされた目標デバッグモジュールをデバッグするためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第1の送信モジュールをさらに含んでもよい。
第1の送信モジュールは、ミニプログラムが目標デバッグモジュールまで実行されたことを確定した場合、目標デバッグモジュールを中断する前にミニプログラムの現在の実行データを送信するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第2の中断モジュール及び第2のデバッグモジュールをさらに含んでもよい。
第2の中断モジュールは、デバッグ結果をフィードバックし、目標デバッグモジュールを再度中断して次の第2のデバッグコマンドを待つためのものである。
第2のデバッグモジュールは、受信された次の第2のデバッグコマンドに応じて目標デバッグモジュールを継続してデバッグするためのものである。
本願の実施例によれば、目標デバッグモジュールは複数ある。このミニプログラムをデバッグする装置1000は、第3の中断モジュール及び第1の実行モジュールをさらに含んでもよい。
第3の中断モジュールは、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第3のデバッグコマンドを待つためのものである。
第1の実行モジュールは、受信された第3のデバッグコマンドに応じて、現在の目標デバッグモジュールを中断し、次の目標デバッグモジュールまでミニプログラムを継続して実行するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第4の中断モジュール及び第2の実行モジュールをさらに含んでもよい。
第4の中断モジュールは、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第4のデバッグコマンドを待つためのものである。
第2の実行モジュールは、受信された第4のデバッグコマンドに応じて現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルし、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第2の送信モジュールをさらに含んでもよい。
第2の送信モジュールは、目標デバッグモジュールに対する選択をキャンセルした後に、目標デバッグモジュールに対する選択がキャンセルされたことを示す解放メッセージを送信するためのものである。
本願の実施例によれば、目標デバッグモジュールを選択することと、ミニプログラムの実行することと、目標デバッグモジュールをデバッグすることとは第1のスレッドで行われ、第1のデバッグコマンド及び第2のデバッグコマンドは第2のスレッドで受信され、デバッグ結果は第2のスレッドでフィードバックされる。
本願の実施例によれば、ミニプログラムの実行はシミュレーション環境又は実際の環境で行われる。
図11は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図11に示すように、このミニプログラムをデバッグする装置1100は、第1の送信モジュール1101と、第2の送信モジュール1102と、第1の受信モジュール1103とを含んでもよい。
第1の送信モジュール1101は、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するように指示する第1のデバッグコマンドを送信するためのものである。
第2の送信モジュール1102は、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信するためのものである。
第1の受信モジュール1103は、目標テストモジュールのデバッグ結果を受信するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1100は、第3の送信モジュールを含んでもよい。
第3の送信モジュールは、フィードバックされたデバッグ結果を受信したことに応答して、第3のデバッグコマンド及び第4のデバッグコマンドのうちの少なくとも1つを送信するためものであり、第3のデバッグコマンドは、現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールまでミニプログラムを継続して実行するように指示し、第4のデバッグコマンドは、現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルし、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行するように指示する。
本願の実施例によれば、このミニプログラムをデバッグする装置1100は、第2の受信モジュールをさらに含んでもよい。
第2の受信モジュールは、目標デバッグモジュールに対する選択がキャンセルされたことを示す解放メッセージを受信するためのものである。
本願の実施例によれば、本願は電子機器、読取可能な記憶媒体及びコンピュータプログラム製品をさらに提供する。コンピュータプログラム製品はコンピュータプログラムを含んでもよく、前記コンピュータプログラムが前記コンピュータにより実行されることで上述したような方法を実現する。
図12に示すように、本願の一実施例による、ミニプログラムをデバッグする方法の電子機器のブロック図である。電子機器とは、様々な形式のデジタルコンピュータ、例えば、ラップトップ型コンピュータと、デスクトップコンピュータと、ワークステーションと、パーソナル・デジタル・アシスタントと、サーバと、ブレードサーバと、大型コンピュータと、他の適宜なコンピュータとを表す旨である。電子機器は、様々な形式の移動装置、例えば、パーソナル・デジタル・プロセッシングと、セルラー電話と、スマートフォンと、ウェアラブル機器と、他の類似する計算装置とを表してもよい。本明細書に示す部品と、それらの接続及び関係と、それらの機能とは単に例示であり、本明細書で説明した及び/又は要求した本願の実現を限定することを意図しない。
図12に示すように、この電子機器1200は、1つ又は複数のプロセッサ1201、メモリ1202、及び各部品を接続するための、高速インターフェース及び低速インターフェースを含むインターフェースを備える。各部品は、異なるバスで互いに接続され、且つ共通のメインボード上に実装されてもよく、又は必要に応じて他の方式で実装されてもよい。プロセッサは、電子機器内で実行されるコマンドを処理することができ、メモリ中又はメモリ上に記憶されて、外部入力・出力装置(例えば、インターフェースに結合する表示機器)上にGUIの図形情報を表示するコマンドを含む。他の実施形態においては、必要に応じて、複数のプロセッサ及び/又は複数のバスを複数のメモリと複数のメモリと一緒に使用してもよい。同様に、複数の電子機器を接続して、各機器が一部の必要な操作を提供してもよい(例えば、サーバアレー、一組のブレードサーバ、又はマルチプロセッサシステムとする)。図12においては、1つのプロセッサ1201の例を示す。
メモリ1202は、本願が提供する非一時的なコンピュータ読取可能な記憶媒体である。ただし、前記メモリには少なくとも1つのプロセッサにより実行可能なコマンドが記憶されており、前記少なくとも1つのプロセッサに本願が提供するミニプログラムをデバッグする方法を実行させる。本願の非一時的なコンピュータ読取可能な記憶媒体は、コンピュータコマンドを記憶しており、このコンピュータコマンドは、コンピュータに本願が提供するミニプログラムをデバッグする方法を実行させる。
メモリ1202は、非一時的なコンピュータ読取可能な記憶媒体として、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能なプログラム及びモジュール、例えば、本願の実施例におけるミニプログラムをデバッグする方法に対応するプログラムコマンド・モジュール(例えば、図10に示す選択モジュール1001、第1の中断モジュール1002及び第1のデバッグモジュール1003、及び/又は、図11に示す第1の送信モジュール1101、第2の送信モジュール1102及び第1の受信モジュール1103)を記憶するために用いられる。プロセッサ1201は、メモリ1202に記憶されている非一時的なソフトウェアプログラム、コマンド及びモジュールを実行することで、サーバの各種機能アプリケーション及びデータ処理を実行する。即ち、上記方法実施例におけるミニプログラムをデバッグする方法を実現する。
メモリ1202は、プログラム記憶領域及びデータ記憶領域を含んでもよく、プログラム記憶領域は、オペレーティングシステムや少なくとも1つの機能に必要なアプリケーションプログラムを記憶してもよく、データ記憶領域は、ミニプログラムをデバッグする方法の電子機器1200の使用により生成されたデータ等を記憶してもよい。また、メモリ1202は、高速ランダムアクセスメモリを含んでもよく、非一時的なメモリ、例えば、少なくとも1つの磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の非一時的なソリッド記憶デバイスを含んでもよい。一部の実施例において、メモリ1202は選択的にプロセッサ1201に対して遠隔に設けられたメモリを含んでもよく、これらの遠隔メモリは、ネットワークを介してミニプログラムをデバッグする方法の電子機器1200に接続されてもよい。上記ネットワークの例示としては、インターネット、イントラネット、ローカルエリアネットワーク、移動通信ネットワーク及びそれらの組合が含まれるが、これらに限られない。
ミニプログラムをデバッグする方法の電子機器1200は、入力装置1203及び出力装置1204をさらに含んでもよい。プロセッサ1201、メモリ1202、入力装置1203及び出力装置1204は、バス又は他の方式で接続されてもよく、図12においてはバスを介して接続される例を示す。
入力装置1203は、入力されたデジタル又はキャラクター情報を受信し、ミニプログラムをデバッグする方法の電子機器1200のユーザ設定及び機能制御に関わるキー信号入力を発生してもよく、例えば、タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、インジケーターロッド、1つ又は複数のマウスボタン、トラックボール、レバー等の入力装置である。出力装置1204は、表示デバイスと、補助照明装置(例えば、LED)と、触覚フィードバック装置(例えば、振動モーター)等を含んでもよい。この表示デバイスは、液晶ディスプレー(LCD)と、発光ダイオード(LED)ディスプレーと、プラズマディスプレーとを含むが、これらに限られない。一部の実施形態において、表示デバイスはタッチスクリーンであってもよい。
ここで説明したシステム及び技術の各実施形態は、デジタル電子回路システム、集積回路システム、専用ASIC(専用集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組合せで実現されてもよい。これらの各実施形態は、1つ又は複数のコンピュータプログラムで実施されることを含んでもよく、この1つまたは複数のコンピュータプログラムが、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行及び/又は解釈されてもよく、このプログラマブルプロセッサは、専用又は共通のプログラマブルプロセッサであってもよく、記憶システムと、少なくとも1つの入力装置と、少なくとも1つの出力装置とからデータと命令とを受信し、データと命令とをこの記憶システムと、この少なくとも1つの入力装置と、この少なくとも1つの出力装置とに伝送してもよい。
これらの計算プログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも称する)は、プログラマブルプロセッサの機械命令を含み、高級プロセス及び/又はオブジェクト指向のプログラミング言語、及び/又はアセンブリ・機械言語によってこれらの計算プログラムを実施してもよい。本明細書で使用した術語「機械読取可能な媒体」及び「コンピュータ読取可能な媒体」とは、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、機器、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を意味しており、機械読取可能な信号である機械命令を受ける機械読取可能な媒体を含む。術語「機械読取可能な信号」とは、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意の信号を意味している。
ユーザとのインタラクションを提供するために、コンピュータでここで説明したシステム及び技術を実施してもよく、このコンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレー)モニタ)と、キーボード及び指向装置(例えば、マウス又はトラックボール)とを有し、ユーザは、このキーボード及びこの指向装置によって、入力をコンピュータに提供することができる。他の種類の装置は、ユーザとのインタラクションを提供するためのものであってもよく、例えば、ユーザに提供するフィードバックは、任意の形式のセンサーフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(声入力、語音入力、又は触覚入力を含む)でユーザからの入力を受信してもよい。
ここで説明したシステム及び技術は、バックグラウンド部品を含む計算システム(例えば、データサーバとする)、又はミドルウェア部品を含む計算システム(例えば、アプリケーションサーバ)、又はフロントエンド部品を含む計算システム(例えば、グラフィカル・ユーザー・インターフェース又はネットワークブラウザを有するユーザコンピュータ、ユーザはこのグラフィカル・ユーザー・インターフェース又はこのネットワークブラウザを介してここで説明したシステム及び技術の実施形態とインタラクトすることができる)、又はこのようなバックグラウンド部品、ミドルウェア部品、或いはフロントエンド部品の任意の組合せを含む計算システムで実施されてもよい。任意の形式又は媒体のデジタルデータ通信(例えば、通信ネットワーク)を介してシステムの部品を相互に接続してもよい。通信ネットワークの例示は、ローカルエリアネットワーク(LAN)と、広域ネットワーク(WAN)と、インターネットとを含む。
コンピュータシステムは、クライアントとサーバとを含んでもよい。クライアントとサーバとは、一般的に互いに離れて、且つ通常に通信ネットワークを介してインタラクトする。相応するコンピュータで実行されるとともに、互いにクライアント-サーバの関係を有するコンピュータプログラムによって、クライアントとサーバとの関係を形成する。
本願の実施例の技術案によれば、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択し、ミニプログラムを実行し、ミニプログラムが各目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断し、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成する。目標デバッグモジュールまで実行された時に中断してデバッグコマンドを待ち、デバッグコマンドが到着した後に目標デバッグモジュールをウェイクアップしてデバッグするため、ミニプログラムのブレークポイントデバッグを実現し、デバッグ効率を向上させることができる。
上記に示した様々な形式のフローを利用して、ステップを並び替え、追加又は削除することができると理解すべきである。例えば、本願に記載された各ステップは、並行に実行されてもよいし、順に実行されてもよいし、異なる順序で実行されてもよく、本願が開示した技術案が所望する結果を実現できる限り、本文はこれについて限定しない。
上述した具体的な実施形態は、本願の保護範囲に対する限定を構成しない。当業者は、設計要求や他の要因に応じて、さまざまな修正、組合、サブ組合及び置換を行うことができると理解すべきである。本願の趣旨及び原則の範囲内になされた任意の修正、等価な置換、改進等は、いずれも本願の保護範囲内に含まれるべきである。
本願は2020年11月16日に提出した、出願番号が202011282569.3である中国特許出願の優先権を要求し、その全部の内容を引用することで本願に含ませる。
[技術分野]
本願はコンピュータ技術分野に関し、具体的に、コンピュータ通信及びソフトウェアデバッグ技術に関する。より具体的に、本願はミニプログラムをデバッグする方法、装置、電子機器、記憶媒体及びコンピュータプログラムを提供する。
ミニプログラムとは、ソフトウェアに組み込まれた、ダウンロードやインストールを必要とせずに利用可能なアプリケーションプログラムである。ミニプログラムの場合であっても、稼動する前に、ミニプログラムをデバッグして、このミニプログラムに存在している文法や、ロジック的なエラーを修正する必要がある。
ミニプログラムに対するデバッグにおいて最も重要な部分は、ブレークポイントデバッグを行うこと、即ち、コードの目標位置でミニプログラムの実行を中断し、ユーザが変数の詳細に基づいてミニプログラムを修正できるように、デスクトップ側のデバッグパネル上に変数の詳細を表示することである。しかし、ブレークポイントデバッグを行う際に、ミニプログラムは中断状態にあり、デバッグツールのデバッグコマンドに応答できないので、デバッグが困難になり、デバッグ効率の低下、及びデバッグ効果の悪化に繋がる。
ミニプログラムをデバッグする方法、装置、電子機器、記憶媒体及びコンピュータプログラムを提供する。
第1の局面によれば、複数のデバッグモジュールを含むミニプログラムをデバッグする方法であって、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択することと、ミニプログラムを実行し、ミニプログラムが目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断することと、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成することと、を含む、ミニプログラムをデバッグする方法を提供する。
第2の局面によれば、複数のデバッグモジュールを含むミニプログラムをデバッグする方法であって、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するように指示する第1のデバッグコマンドを送信することと、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信することと、目標デバッグモジュールのデバッグ結果を受信することと、を含む、ミニプログラムをデバッグする方法を提供する。
第3の局面によれば、複数のデバッグモジュールを含むミニプログラムをデバッグする装置であって、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するための選択モジュールと、ミニプログラムを実行し、ミニプログラムが目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断するための第1の中断モジュールと、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成するための第1のデバッグモジュールと、を含む、ミニプログラムをデバッグする装置を提供する。
第4の局面によれば、複数のデバッグモジュールを含むミニプログラムをデバッグする装置であって、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するように指示する第1のデバッグコマンドを送信するための第1の送信モジュールと、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信するための第2の送信モジュールと、目標デバッグモジュールのデバッグ結果を受信するための第1の受信モジュールと、を含む、ミニプログラムをデバッグする装置を提供する。
第5の局面によれば、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に接続するメモリとを含む電子機器であって、メモリには、少なくとも1つのプロセッサによって実行可能なコマンドが記憶されており、コマンドは少なくとも1つのプロセッサによって実行されることで、少なくとも1つのプロセッサに本願により提供されるミニプログラムをデバッグする方法を実行させる電子機器を提供する。
第6の局面によれば、プロセッサに本願により提供されるミニプログラムをデバッグする方法を実行させるためのコンピュータプログラムが記憶されている非一時的なコンピュータ読取可能な記憶媒体を提供する。
第7の局面によれば、コンピュータ読取可能な記憶媒体に記憶されているコンピュータプログラムであって、コンピュータプログラムの命令は、プロセッサによって実行されることで、上記のような方法を実現するコンピュータプログラムを提供する。
この部分で説明した内容は、本願の実施例の肝心な又は重要な特徴を表記するためのものでもなく、本願の範囲を限定するためのものでもないと理解すべきである。本願の他の特徴は、以下の明細書によって理解し易くなるであろう。
図面は、本技術案がよりよく理解されるためのものであり、本願に対する限定を構成しない。
図1は、本願の一実施例による、ミニプログラムをデバッグする方法及び装置を応用できる例示的なシステム構造である。
図2は、本願の一実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図3は、本願の一実施例による、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグする方法のフローチャートである。
図4は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図5は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図6は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図7は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図8は、本願の一実施例による、シミュレーション環境でのミニプログラムをデバッグする方法のフローチャートである。
図9は、本願の一実施例による、実際の環境でのミニプログラムをデバッグする方法のフローチャートである。
図10は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図11は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図12は、本願の一実施例による、ミニプログラムをデバッグする方法の電子機器のブロック図である。
以下、図面に合わせて本願の例示的な実施例について説明する。その中、理解に役立つように本願の実施例の各詳細を含み、これらはあくまで例示的なものであると理解すべきである。そのため、当業者は、本願の範囲及び趣旨から逸脱せずに、ここで説明した実施例に対して、様々な変更や、修正をなし得ることを認識すべきである。同様に、明確及び簡明のために、以下の説明において公知の機能及び構成に対する説明を省略している。
ミニプログラムは異なるOSプラットフォーム(例えば、Android、IOS、Webブラウザ等)において実行されることができ、OSプラットフォームとデスクトップ側のデバッグツールとの間のインタラクションには幾つかの制限がある。例えば、IOSオペレーティングシステムの制限によって、IOS端末はデスクトップ側のデバッグツールと直接に通信することができない。つまり、携帯電話側の実行環境のコードブレークポイント及びデバッグ機能を実現できない。
本願を実現する過程において、発明者は、デスクトップ側の開発ツールにおいてミニプログラムの実行をシミュレートした後、デバッグプログラムとシミュレーションミニプログラムとの間の通信により、ミニプログラムのデバッグを完了させることができるという知見を得た。
しかし、実機の実行環境においても、シミュレーション実行環境においても、ミニプログラムをデバッグする際には、デバッグツールとミニプログラムを実行するプロセスとがコマンドインタラクションを行う必要がある。一方、ミニプログラムのデバッグにおいて最も主要なことはブレークポイントデバッグを行うことであり、ブレークポイントデバッグを行う際に、ミニプログラムは中断状態にあり、デバッグツールのコマンドに応答できないので、デバッグが困難になり、デバッグ効率の低下、及びデバッグ効果の悪化に繋がる。
図1は本願の一実施例による、ミニプログラムをデバッグする方法及び装置を応用できる例示的なシステム構造100である。図1に示されたものは単に本願の実施例のシステム構造を応用できる例示に過ぎず、本願の技術的内容に対する当業者の理解を容易にするためのものであり、本願の実施例が他の機器、システム、環境又は場面に用いることができないことを意味していないことに注意すべきである。
図1に示すように、この実施例によるシステム構造100は、端末機器110と、端末機器120とを含んでもよい。端末機器110と端末機器120との間は、整合された外付インタラクションインターフェースにより接続されて直接に通信してもよく、クラウドサーバによる転送を通じて間接に通信してもよい。
端末機器120にはミニプログラムが実行されていてもよく、端末機器110にはミニプログラム開発用の開発ツールが含まれており、開発ツールにはミニプログラムの実行をシミュレートするためのシミュレータ111、及びミニプログラムをデバッグするためのデバッガ112が含まれており、デバッガ112はユーザにデータを操作、照会するためのデバッグパネルを提供することができる。
ユーザは端末機器120のミニプログラムをデバッグする必要がある場合に、端末機器110と端末機器120との直接なインタラクションにより実現してもよく、端末機器110のデバッガ112とシミュレータ111とのインタラクションにより実現してもよく、クラウドサーバによる転送を通じて端末機器110と端末機器120とをインタラクトさせることによって実現してもよい。例えば、Androidシステムの端末は、システムがオープンソースであるため、デスクトップ側のデバッガ112と直接に通信することができるので、Androidシステムのミニプログラムは、直接に実機の実行環境でデバッグされてもよい。また、例えば、IOSシステムの端末はデスクトップ側のデバッガ112と直接に通信することができないため、シミュレータ111においてミニプログラムの実行をシミュレートし、シミュレータ111とデバッガ112とのインタラクションによりミニプログラムをデバッグすることができる。さらに、例えば、IOS端末の実機デバッグを実現するために、クラウドサーバによる転送を通じてデバッガ112とIOS端末との間の通信を実現して、ミニプログラムのデバッグを実現してもよい。さらに、例えば、Webブラウザにおけるミニプログラムもデバッガ112と直接に通信することができるため、Webブラウザにおけるミニプログラムをデバッグしてもよい。したがって、本願はマルチプラットフォームのミニプログラムのデバッグを実現できる。
例示的に、ユーザが端末機器110のデバッガ112により提供されたデバッグパネル上でクリックし、又はデバッグコマンドを入力することで、デバッガ112はデバッグコマンドを端末機器120に送信し、端末機器120はデバッグコマンドを受信した後、ミニプログラムをデバッグして、デバッグ結果を生成し、その後、デバッグ結果をデバッガ112にフィードバックして、デバッガ112のデバッグパネル上に表示することができる。
例示的に、シミュレータ111はミニプログラムの実行をシミュレートすることができるため、ユーザがデバッガ112のデバッグパネル上でデバッグコマンドを入力又はクリックした後、デバッガ112はデバッグコマンドをシミュレータ111に送信し、シミュレータ111はデバッグコマンドを受信した後、ミニプログラムをデバッグして、デバッグ結果を生成し、その後、デバッグ結果をデバッガ112にフィードバックし、デバッガ112のデバッグパネル上に表示することができる。
例示的に、ユーザがデバッグパネル上でクリック又は入力したデバッグコマンドは、ある変数aの値を照会することであってもよく、端末機器120がフィードバックしたデバッグ結果は、この変数の値、例えばa=123であってもよい。
図2は、本願の一実施例によるミニプログラムをデバッグする方法のフローチャートである。
図2に示すように、このミニプログラムをデバッグする方法200は、操作S210~操作S230を含んでもよい。
操作S210において、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択する。
本願の実施例によれば、デバッグしようとするミニプログラムについて、ミニプログラムに幾つかのデバッグコードを書き込むことで、書き込まれたデバッグコードによってミニプログラムを複数のデバッグモジュールに分け、ミニプログラムに対するデバッグを各デバッグモジュールに対するデバッグに変換することができる。例示的に、実際の必要に応じて、ブレークポイントデバッグを必要とする位置にデバッグコードを書き込むことで、ミニプログラムが各デバッグモジュールまで実行される場合、ブレークポイントデバッグを行うようにすることができ、複数のデバッグモジュールには実行順序がある。
例示的に、デバッグモジュールは、ミニプログラムの2行目、3行目、5行目、6行目、及び9行目のいずれにおいても、ブレークポイントデバッグを必要とするデバッグモジュールを有するとする。ユーザは、そのうちの2行目、3行目及び9行目を今回のデバッグの目標デバッグモジュールとして選択してもよい。
具体的に、GoogleのオープンソースのChromeデバッグパネルをデバッガとして採用してもよい。ユーザが、開発ツールで2行目、3行目、及び9行目を選択した後、デバッグパネル上でブレークポイントデバッグを開始するコマンドをクリックすることで、デバッガはコマンドをシミュレータ又は実際の実行端末に送信することができる。
実機の実行環境で、デバッガはコマンドを実際の実行端末に送信し、シミュレーションの実行環境で、デバッガはコマンドを開発ツールにおけるシミュレータに送信することを指摘しておく。ここで、ミニプログラム開発ツールは、ミニプログラムをシミュレートするシミュレータを提供でき、且つ、シミュレータのブレークポイントデバッグ機能に対するサポート程度がよい。
本願の実施例によれば、ミニプログラムの実行環境はシミュレータ又は実際の実行端末内の1つのスレッドにあってもよく、このスレッドは例えば第1のスレッドである。シミュレータ又は実際の実行端末はデバッグコマンドを受信した後、第1のスレッドにユーザにより選択された2行目、3行目及び9行目の位置情報を記憶することで、2行目、3行目及び9行目のデバッグモジュールが目標デバッグモジュールであることを示すことができる。
操作S220において、ミニプログラムを実行して、ミニプログラムが目標デバッグモジュールまで実行された時に、目標デバッグモジュールを中断する。
本願の実施例によれば、ミニプログラムが各デバッグモジュールまで実行された時に、デバッグモジュールはその自体が所在する位置と、第1のスレッドに格納された目標デバッグモジュールの位置とを比較することで、自体が目標デバッグモジュールであるか否かを判断する。目標デバッグモジュールである場合、ユーザが自体に対してブレークポイントデバッグを実施しようとすることが分る。この場合、まず、ミニプログラムの現在の実行状態データをデバッガに送信してもよい。実行状態データには、例えば、現在何行目まで実行されたか、まだ何行が残っているか等の位置情報が含まれてもよい。現在の実行位置の幾つかの具体的な変数情報等がさらに含まれてもよい。デバッガは、これらの実行状態データを受信した後、ユーザが照会できるようにデバッグパネル上に表示する。
本願の実施例によれば、現在の目標デバッグモジュールは、現在の実行状態データをデバッガに送信した後、ユーザがブレークポイントデバッグ操作を行うように、実行を中断する必要がある。例示的に、シミュレータにおいて、第1のスレッドは、workerスレッドであってもよく、workerスレッドは、JavaScriptのためにマルチスレッド環境を作ることで生成された、役割を果たすための複数のスレッドの1つである。workerスレッドは、Atomics.wait方法を使用してミニプログラム、即ち、現在の目標デバッグモジュールを中断してもよい。実際のクライアントでは、ブレークポイントを実現可能な端能力を使用してミニプログラムの中断を実現してもよい。ただし、端能力とは、端末が実現可能な能力であり、ソフトウェアプログラムにより実現されてもよく、端能力は、メッセージ伝達を実現するメッセージ端能力等をさらに含んでもよい。
操作S230において、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成する。
本願の実施例によれば、ミニプログラムは中断された後、デバッガのデバッグコマンドを待つ。しかし、ミニプログラムが中断されているため、デバッガにより直接送信されたコマンドには応答できない。本願の実施例では、シミュレータ又は実際のクライアントにデバッガのデバッグコマンドを受信するための第2のスレッドを設けており、その後、第2のスレッドはデバッグコマンドを記憶し、例えば、所定の記憶空間に記憶することができる。その後、第1のスレッドへウェイクアップコマンドを送信して、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶されたデバッグコマンドを読み取り、そしてデバッグコマンドに応じてデバッグ操作を行って、対応するデバッグ結果を生成することができる。
本願の実施例によれば、第2のスレッドの主要な作用は、第1のスレッドとデバッガとの間でコマンド及びメッセージの記憶及び転送を実現することである。シミュレータにおいて、第2のスレッドはworkerスレッドの一種であってもよい。実機の実行環境では、メッセージ伝達を実現可能な端能力を使用して実現されてもよい。
例示的に、デバッグコマンドは、ある変数aの値を取得するように指示するものであってもよく、目標デバッグモジュールは、現在のフィールドで変数aの値を求めてから、変数aの値を第2のスレッドにフィードバックしてもよく、第2のスレッドは変数aの値をデバッガにフィードバックし、デバッガがそれをユーザに表示してもよい。デバッグコマンドは、目標デバッグモジュールにおけるある変数bの値を設定するものであってもよく、デバッグコマンドにはb=456の式が含まれてもよく、目標デバッグモジュールは、現在のフィールドでの変数bの値を456に設定し、その後、b=456の値設定成功のメッセージを第2のスレッドに送信し、第2のスレッドはメッセージをデバッガに転送する。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは中断を継続し、新たなコマンドを待つ。
本願の実施例によれば、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択し、ミニプログラムを実行し、ミニプログラムが目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断し、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成する。目標デバッグモジュールまで実行された時に中断してデバッグコマンドを待ち、デバッグコマンドが到着した後に目標デバッグモジュールをウェイクアップしてデバッグするため、ミニプログラムのブレークポイントデバッグを実現し、デバッグ効率及びデバッグ効果を向上させることができる。
本願の実施例によれば、ミニプログラムをデバッグする方法は、受信された第2のデバッグコマンドを記憶し、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成することをさらに含む。
具体的に、受信された第2のデバッグコマンドを記憶してウェイクアップコマンドを生成することは、第2のスレッドで行われる。第2のスレッドは、デバッガのデバッグコマンドを受信した後、デバッグコマンドを記憶してもよい。例示的に、シミュレータでは、例えば、SharedArrayBuffer方法を使用してコマンド記憶を実現してもよく、SharedArrayBufferは、1つの共用内部メモリを表してもよく、実際の実行端末では、端末の内部メモリを共用内部メモリとして使用してもよい。第1のスレッド及び第2のスレッドは、この共用内部メモリを通じて通信することができる。第2のスレッドは、デバッグコマンドを共用内部メモリに記憶した後、第1のスレッドへウェイクアップコマンドを送信し、中断箇所の目標デバッグモジュールをウェイクアップする。例示的に、シミュレータでは、Atomics.notify方法を使用してworkerスレッドをウェイクアップしてもよい。実際の実行端末では、ウェイクアップ機能を実現可能な端能力を使用して目標デバッグモジュールをウェイクアップしてもよい。
図3は本願の一実施例による、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグする方法のフローチャートである。
図3に示すように、この方法は操作S331~操作S332を含んでもよい。
操作S331において、ウェイクアップコマンドに応じて、中断された目標デバッグモジュールをウェイクアップする。
操作S332において、記憶された第2のデバッグコマンドを取得し、記憶された第2のデバッグコマンドに応じて、ウェイクアップされた目標デバッグモジュールをデバッグする。
本願の実施例によれば、第2のスレッドはシミュレータにおいてAtomics.notify方法を利用してworkerスレッドにおける目標デバッグモジュールをウェイクアップしてもよい。実際の実行端末では、ウェイクアップ機能を実現可能な端能力を使用して目標デバッグモジュールをウェイクアップしてもよい。目標デバッグモジュールがウェイクアップされた後、まず共用内部メモリにおけるデバッグコマンドを読み取り、その後、デバッグ操作を行う。
本願の実施例によれば、第2のスレッドは、受信したデバッグコマンドを共用内部メモリに記憶し、その後、第1のスレッドをウェイクアップし、第1のスレッドがウェイクアップされた後に共用内部メモリにおけるコマンドを読み取り、デバッグを行う。第1のスレッド及び第2のスレッドは、共用内部メモリを通じて通信可能であり、これによって目標デバッグモジュールがブレークポイントデバッグを行うことができるようになる。
図4は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図4に示すように、この方法は、操作S410~操作S420を含んでもよい。
操作S410において、デバッグ結果をフィードバックし、目標デバッグモジュールを再度中断して次の第2のデバッグコマンドを待つ。
操作S420において、受信された次の第2のデバッグコマンドに応じて目標デバッグモジュールを継続してデバッグする。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは継続して中断して、新たなコマンドを待つ。新たなコマンドは、現在の目標デバッグモジュールを継続してデバッグする第2のデバッグコマンドであってもよく、第2のスレッドがデバッガの新たなデバッグコマンドを受信した後、新たなデバッグコマンドを共用内部メモリに記憶する。その後、第1のスレッドへウェイクアップコマンドを送信して、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶された新たなデバッグコマンドを読み取り、その後、新たなデバッグコマンドに応じてデバッグ操作を継続して行って、新たなデバッグ結果を生成してもよい。その後、新たなデバッグ結果を第2のスレッドにフィードバックし、第2のスレッドは新たなデバッグ結果をデバッガに送信し、デバッガは新たなデバッグ結果をユーザに表示する。
例示的に、ユーザがデバッガを通じて変数aの値を取得するコマンドを送信した後、目標デバッグモジュールはデバッグを経てa=123をフィードバックし、ユーザはa=123を確認した後、さらにデバッガを通じてa=456のコマンドを送信し、目標デバッグモジュールはデバッグを経てaの値を456に設定し、その後、a=456のデバッグ結果をフィードバックする。
現在の目標デバッグモジュールが新たなデバッグ結果a=456をフィードバックした後、現在の目標デバッグモジュールは継続して中断し、次のコマンドを待つことを指摘しておく。
図5は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図5に示すように、この方法は操作S510~操作S520を含んでもよい。
操作S510において、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第3のデバッグコマンドを待つ。
操作S520において、受信された第3のデバッグコマンドに応じて現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールまで、ミニプログラムを継続して実行する。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは継続して中断して、新たなコマンドを待つ。新たなコマンドは、現在の目標デバッグモジュールを終了し、その後、次の目標デバッグモジュールまで実行してデバッグするように指示する第3のデバッグコマンドであってもよい。この次の目標デバッグモジュールは、現在の目標デバッグモジュールの後の1つの目標デバッグモジュールであってもよいし、ユーザにより指定された1つの目標デバッグモジュールであってもよい。例えば、現在の目標デバッグモジュールは、2行目のデバッグモジュールであってもよく、次の目標デバッグモジュールは、3行目のデバッグモジュールであってもよいし、ユーザにより指定された、例えば9行目の目標デバッグモジュールであってもよい。
本願の実施例によれば、第2のスレッドはデバッガの第3のデバッグコマンドを受信した後、第3のデバッグコマンドを共用内部メモリに記憶する。その後、第1のスレッドへウェイクアップコマンドを送信して、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶された第3のデバッグコマンドを読み取り、その後、第3のデバッグコマンドに応じて現在デバッグモジュールを終了し、次の目標デバッグモジュール、例えば、9行目の目標デバッグモジュールまで、ミニプログラムを継続して実行し、そして9行目の実行状態データを第2のスレッドに送信して、第2のスレッドがそれをデバッガに送信するようにする。その後、9行目の目標デバッグモジュールの実行を中断し、当該モジュールをデバッグするコマンドを待つ。
図6は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図6に示すように、この方法は操作S610~操作S620を含んでもよい。
操作S610において、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第4のデバッグコマンドを待つ。
操作S620において、受信された第4のデバッグコマンドに応じて現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルして、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行する。
本願の実施例によれば、現在の目標デバッグモジュールがデバッグ結果をフィードバックした後、現在の目標デバッグモジュールは継続して中断し、新たなコマンドを待つ。新たなコマンドは、すべての目標デバッグモジュールのブレークポイントデバッグを終了するように指示する第4のデバッグコマンドであってもよい。
本願の実施例によれば、第2のスレッドはデバッガの第4のデバッグコマンドを受信した後、第4のデバッグコマンドを共用内部メモリに記憶する。そして、第1のスレッドへウェイクアップコマンドを送信し、中断箇所の目標デバッグモジュールをウェイクアップする。目標デバッグモジュールがウェイクアップされた後、記憶された第4のデバッグコマンドを読み取り、その後、第4のデバッグコマンドに応じて現在デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルして、目標デバッグモジュールを選択してブレークポイントデバッグを行う第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行する。
例示的に、第1のスレッドは第4のデバッグコマンドを読み取りした後、現在の目標デバッグモジュールを終了し、2行目、3行目及び9行目のデバッグモジュールを目標デバッグモジュールとして選択したことをキャンセルする。その後、第2のスレッドへ2行目、3行目及び9行目のデバッグモジュールを目標デバッグモジュールとして選択したことをキャンセルする解放メッセージを送信し、第2のスレッドは解放メッセージをデバッガに送信し、デバッガはそれをユーザに表示し、ユーザは非ブレークポイントデバッグを継続して行うことができる。
図7は、本願の別の実施例による、ミニプログラムをデバッグする方法のフローチャートである。
図7に示すように、このミニプログラムをデバッグする方法700は操作S710~操作S730を含んでもよい。
操作S710において、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するように指示する第1のデバッグコマンドを送信する。
本願の実施例によれば、デバッグしようとするミニプログラムについて、ミニプログラムに幾つかのデバッグコードを書き込むことで、書き込まれたデバッグコードによってミニプログラムを複数のデバッグモジュールに分け、ミニプログラムに対するデバッグを各デバッグモジュールに対するデバッグに変換することができる。例示的に、実際の必要に応じて、ブレークポイントデバッグを必要とする位置にデバッグコードを書き込むことで、ミニプログラムが各デバッグモジュールまで実行される場合、ブレークポイントデバッグを行うことができる。
例示的に、ユーザは、ブレークポイントデバッグを実施しようとする位置情報を選択でき、ユーザにより選択された位置のデバッグモジュールは目標デバッグモジュールとなる。例えば、ユーザが2行目、3行目及び9行目を選択すると、2行目、3行目及び9行目のデバッグモジュールは目標デバッグモジュールとなる。
本願の実施例によれば、ユーザはデバッグを必要とする位置を選択した後、デバッグパネル上でブレークポイントデバッグを開始するコマンドをクリックすることができ、デバッガはユーザにより選択されたブレークポイントデバッグを必要とする位置情報が含まれるコマンドをデバッグ対象側のシミュレータ又は実際の実行端末に送信してもよい。
操作S720において、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信する。
操作S730において、目標デバッグモジュールのデバッグ結果を受信する。
例示的に、デバッガがシミュレータ又はクライアントから送信された2行目の実行データを受信したことは、ミニプログラムが2行目まで実行され、且つ中断したことを意味する。ユーザはデバッグパネル上で例えば変数の値を照会する等のデバッグコマンドをクリック又は入力することができ、デバッガはデバッグコマンドをデバッグ対象側のシミュレータ又はクライアントに送信する。デバッグ対象側はデバッグコマンドに応答してデバッグ結果を生成した後、デバッグ結果をデバッガにフィードバックしてもよく、デバッガは、ユーザが照会できるように、デバッグ結果をユーザに表示する。
本願の実施例によれば、第1のデバッグコマンドを送信して、前記複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するように指示し、前記ミニプログラムが前記目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、前記目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信し、前記目標デバッグモジュールのデバッグ結果を受信する。第1のコマンドを送信して、ミニプログラムが目標デバッグモジュールまで実行された時に中断してデバッグコマンドを待つように指示し、その後、第2のデバッグコマンドを送信して、目標デバッグモジュールをウェイクアップしてデバッグするため、ミニプログラムのブレークポイントデバッグを実現し、デバッグ効率及びデバッグ効果を向上させることができる。
本願の実施例によれば、このミニプログラムをデバッグする方法700は、フィードバックされたデバッグ結果を受信したことに応答して、第3のデバッグコマンド及び第4のデバッグコマンドのうちの少なくとも1つを送信することをさらに含んでもよく、第3のデバッグコマンドは、現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールまで、ミニプログラムを継続して実行するように指示し、第4のデバッグコマンドは、現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルして、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行するように指示する。
本願の実施例によれば、このミニプログラムをデバッグする方法700は、目標デバッグモジュールに対する選択がキャンセルされたことを示す解放メッセージを受信することをさらに含んでもよい。
本願の実施例によれば、デバッガは、さらに第3のデバッグコマンドを送信して、デバッグ対象側が現在の位置のブレークポイントデバッグを終了し、指定された位置に遷移してブレークポイントデバッグを行うように指示してもよい。例えば、第3のデバッグコマンドは2行目のデバッグを終了し、9行目に遷移してブレークポイントデバッグを行うように指示する。
本願の実施例によれば、さらに第4のデバッグコマンドを送信して、デバッグ対象側が現在の位置のブレークポイントデバッグを終了するとともに、目標デバッグモジュールに対する選択をキャンセルして、ブレークポイントデバッグを終了し、非ブレークポイントデバッグに回復するように指示してもよい。第4のデバッグコマンドを送信した後、デバッグ対象側から送信された、目標デバッグモジュールに対する選択がキャンセルされることを示す解放メッセージを受信することになり、非ブレークポイントデバッグを継続して行うことができる。
図8は本願の一実施例による、シミュレーション環境でのミニプログラムをデバッグする方法のフローチャートである。
図8に示すように、この方法は操作S8001~操作S8027を含む。
操作S8001において、デバッガはブレークポイントデバッグを開始する第1のコマンドをシミュレータの第2のスレッドに送信し、第2のスレッドは第1のコマンドをシミュレータの第1のスレッドに送信する。ただし、コマンドにはユーザにより選択された、ブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報が含まれている。
例示的に、第1のスレッドはworkerスレッドであってもよく、第2のスレッドは制御プログラムであってもよく、ミニプログラムはworkerスレッドで実行される。ユーザにより選択されたブレークポイントデバッグを必要とする目標デバッグモジュールは、2行目のデバッグモジュール、3行目のデバッグモジュール及び9行目のデバッグモジュールであってもよい。
操作S8002において、第1のスレッドはユーザにより選択されたブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報をバッファリングする。
例示的に、データセット[2、3、9]として記憶されてもよい。
操作S8003において、ミニプログラムが目標デバッグモジュールまで実行された後、現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をデバッガに送信する。
例示的に、ミニプログラムが2行目の目標デバッグモジュールまで実行された後、2行目の目標デバッグモジュールは、自体が所在する行数2とデータセット[2、3、9]における行数とを比較して、データセット[2、3、9]に自体が所在する行数2が存在することを確認した場合、worker. postMessage方法によって現在位置の実行状態情報を第2のスレッドに送信し、第2のスレッドを通じてデバッガに転送してもよい。
操作S8004において、デバッガは現在のブレークポイントの実行状態データを表示するとともに、ユーザ操作できるように、操作ボタンを表示する。
操作S8005において、目標デバッグモジュールは実行を中断し、現在のブレークポイントが有効となり、デバッグコマンドを待つ。
例示的に、目標デバッグモジュールは、Atomics.wait(SharedArrayBuffer)の方法によって実行を中断し、第2のスレッドによりSharedArrayBuffer共用内部メモリに記憶されたコマンドを待つ。
操作S8006において、ユーザはデバッガにより提供されるデバッグパネル上で操作して、変数の結果を照会する。
操作S8007において、デバッガは変数を求める第2のコマンドを第2のスレッドに送信し、第2のコマンドにはユーザが照会しようとする変数名が含まれている。
操作S8008において、第2のスレッドは、第2のコマンドを共用内部メモリに記憶し、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成して、ブレークポイントにおける目標デバッグサブモジュールをウェイクアップする。
例示的に、第2のスレッドは第2のコマンドをSharedArrayBufferに記憶し、その後、Atomics.notify(SharedArrayBuffer)の方法によってウェイクアップコマンドを生成して、目標デバッグモジュールをウェイクアップする。
操作S8009において、目標デバッグモジュールは共用内部メモリにおける第2のコマンドを読み取り、変数の値を求める。
操作S8010において、目標デバッグモジュールはデバッグ結果、即ち、変数の算出結果を第2のスレッドに送信し、第2のスレッドはそれをデバッガに転送する。
例示的に、目標デバッグモジュールは、worker. postMessage方法によって、変数の算出結果を第2のスレッドに送信する。
操作S8011において、目標デバッグモジュールは、現在のブレークポイントのコード内でループする。
例示的に、デバッグモジュールは、1つのwhileループにあってもよく、whileループにおいてはこのwhileループから抜ける条件を設置して、条件を満たすと現在のwhileから抜け、そうでなければ、現在の目標デバッグモジュールのwhileループを継続するようにしてもよい。例えば、falseをフィードバックすることでループから抜けように、trueをフィードバックすることでwhileループを継続するように設定してもよい。
操作S8012において、目標デバッグモジュールは実行を中断してブレークポイントを保持する。
例示的に、目標デバッグモジュールは、Atomics.wait(SharedArrayBuffer)の方法によって実行を中断し、第2のスレッドによりSharedArrayBuffer共用内部メモリに記憶されたコマンドを待つ。
操作S8013において、ユーザはデバッグパネル上で変数の算出結果を照会する。
操作S8014において、ユーザはデバッグパネル上でクリックして次の目標デバッグモジュールに遷移する。
例示的に、次の目標デバッグモジュールは、現在の目標デバッグモジュールの直後のものであってもよく、ユーザにより指定された位置における目標デバッグモジュールであってもよい。
操作S8015において、デバッガは現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールに遷移する第3のデバッグコマンドを第2のスレッドに送信する。
操作S8016において、第2のスレッドは第3のデバッグコマンドを共用内部メモリに書き込み、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成して、ブレークポイントにおける目標デバッグサブモジュールをウェイクアップする。
例示的に、第2のスレッドは第3のコマンドをSharedArrayBufferに記憶し、その後、Atomics.notify(SharedArrayBuffer)の方法によってウェイクアップコマンドを生成して、目標デバッグモジュールをウェイクアップする。
操作S8017において、目標デバッグモジュールは共用内部メモリにおける第3のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
例示的に、trueをフィードバックすることで現在の目標デバッグモジュールのwhileループから抜けて、現在の目標デバッグモジュールの実行を終了してもよい。
操作S8018において、次のブレークポイントの目標デバッグモジュールまで、ミニプログラムを継続して実行する。
操作S8019において、目標デバッグモジュールは現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をデバッガに送信する。
操作S8020において、目標デバッグモジュールは実行を中断し、現在のブレークポイントが有効となり、デバッグコマンドを待つ。
操作S8021において、ユーザはデバッグパネル上でクリックしてすべてのブレークポイントデバッグの操作を終了する。
操作S8022において、デバッガはブレークポイントデバッグを終了する第4のコマンドを第2のスレッドに送信する。
操作S8023において、第2のスレッドは第4のコマンドを共用内部メモリに書き込み、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成して、ブレークポイントにおける目標デバッグサブモジュールをウェイクアップする。
操作S8024において、目標デバッグモジュールは共用内部メモリにある第4のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
操作S8025において、第1のスレッドはブレークポイントを解放するメッセージを第2のスレッドに送信し、第2のスレッドはブレークポイントを解放するメッセージをデバッガに送信する。
操作S8026において、デバッガは非ブレークポイントデバッグ状態に回復する。
操作S8027において、第1のスレッドにおけるミニプログラムは継続して実行され、後でユーザが目標デバッグモジュールを選択してブレークポイントデバッグを行う第1のコマンドを新たに受信すると、上記過程を繰り返す。後で第1のコマンドを受信しないと、終了するまで継続して実行する。
図9は本願の一実施例による、実際の環境でのミニプログラムをデバッグする方法のフローチャートである。
図9に示すように、この方法は操作S9001~操作S9027を含む。
本願の実施例によれば、実際の環境では、ミニプログラムが実際のクライアントコンピューターで実行されるため、デバッガとクライアントコンピューターとのインタラクションはクラウドサーバを通じて転送されてもよい。
操作S9001において、デバッガはブレークポイントデバッグを開始する第1のコマンドをクラウドサーバに送信し、クラウドサーバは第1のコマンドをクライアントの第2のスレッドに送信し、第2のスレッドは第1のコマンドをクライアントの第1のスレッドに送信する。ただし、コマンドには、ユーザにより選択された、ブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報が含まれている。
例示的に、第1のスレッドと第2のスレッドのいずれもクライアントにおけるミニプログラムをデバッグするためのアプリケーションプログラムであってもよく、ミニプログラムは第1のスレッド中で実行される。
操作S9002において、第1のスレッドはユーザにより選択されたブレークポイントデバッグを必要とする目標デバッグモジュールの位置情報をバッファリングする。
操作S9003において、ミニプログラムが目標デバッグモジュールまで実行された後、現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9004において、デバッガは現在の位置の実行状態データを表示するとともに、ユーザが操作できるように操作ボタンを表示する。
操作S9005において、目標デバッグモジュールは実行を中断し、現在のブレークポイントが有効となり、デバッグコマンドを待つ。
例示的に、目標デバッグモジュールは端能力を通じて中断を実現してもよく、クライアントの端能力は各種の能力を実現可能な方法であってもよく、プログラミングすることで実現される。
操作S9006において、ユーザはデバッガにより提供されるデバッグパネル上で操作して変数の結果を照会する。
操作S9007において、デバッガは変数を求める第2のコマンドをクラウドサーバに送信し、クラウドサーバはそれをクライアントの第2のスレッドに転送し、第2のコマンドには、ユーザが照会しようとする変数名が含まれている。
操作S9008において、第2のスレッドは第2のコマンドを共用内部メモリに記憶し、端能力を通じて目標デバッグモジュールをウェイクアップする。
操作S9009において、目標デバッグモジュールは共用内部メモリにおける第2のコマンドを読み取り、変数の値を求める。
操作S9010において、目標デバッグモジュールはメッセージ伝達端能力を通じて、変数の算出結果を第2のスレッドに送信し、第2のスレッドは算出結果をクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9011において、目標デバッグモジュールは、現在のブレークポイントのコード内でループする。
操作S9012において、目標デバッグモジュールは、ブレークポイント端能力を通じて実行を中断して、ブレークポイントを保持する。
操作S9013において、ユーザはデバッグパネル上で変数の算出結果を照会する。
操作S9014において、ユーザはデバッグパネル上でクリックして次の目標デバッグモジュールに遷移する。
例示的に、次の目標デバッグモジュールは現在の目標デバッグモジュールの直後のものであってもよく、ユーザにより指定された位置における目標デバッグモジュールであってもよい。
操作S9015において、デバッガは現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールに遷移する第3のデバッグコマンドをクラウドサーバに送信し、クラウドサーバはそれをクライアントの第2のスレッドに転送する。
操作S9016において、第2のスレッドは第3のデバッグコマンドを共用内部メモリに書き込み、端能力を通じて目標デバッグモジュールをウェイクアップする。
例示的に、共用内部メモリはクライアントの内部メモリである。
操作S9017において、目標デバッグモジュールは共用内部メモリにおける第3のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
操作S9018において、次のブレークポイントの目標デバッグモジュールまで、ミニプログラムを継続して実行する。
操作S9019において、目標デバッグモジュールは現在のブレークポイントの実行状態情報を第2のスレッドに送信し、第2のスレッドは実行状態情報をクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9020において、目標デバッグモジュールは実行を中断し、ブレークポイントが有効となり、デバッグコマンドを待つ。
操作S9021において、ユーザはデバッグパネル上でクリックしてすべてのブレークポイントデバッグの操作を終了する。
操作S9022において、デバッガはブレークポイントデバッグを終了する第4のコマンドを第2のスレッドに送信する。
操作S9023において、第2のスレッドは第4のコマンドを共用内部メモリに書き込み、端能力を通じて第1のスレッドをウェイクアップする。
操作S9024において、目標デバッグモジュールは共用内部メモリにある第4のコマンドを読み取り、現在の目標デバッグモジュールの実行を終了する。
操作S9025において、第1のスレッドはブレークポイントを解放するメッセージをメッセージ伝達端能力を通じて第2のスレッドに送信し、第2のスレッドはブレークポイントを解放するメッセージをクラウドサーバに送信し、クラウドサーバはそれをデバッガに転送する。
操作S9026において、デバッガは非ブレークポイントデバッグ状態に回復する。
操作S9027において、第1のスレッドにおけるミニプログラムは継続して実行され、後でユーザが目標デバッグモジュールを選択してブレークポイントデバッグを行う第1のコマンドを新たに受信すると、上記過程を繰り返す。後で第1のコマンドを受信しないと、終了するまで継続して実行する。
図10は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図10に示すように、このミニプログラムをデバッグする装置1000は、選択モジュール1001と、第1の中断モジュール1002と、第1のデバッグモジュール1003とを含んでもよい。
選択モジュール1001は、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するためのものである。
第1の中断モジュール1002は、ミニプログラムを実行し、ミニプログラムが目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断するためのものである。
第1のデバッグモジュール1003は、第2のデバッグコマンドに応じて中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、処理モジュールをさらに含んでもよい。
処理モジュールは、受信された第2のデバッグコマンドを記憶し、ミニプログラムをウェイクアップするためのウェイクアップコマンドを生成するためのものである。
第1のデバッグモジュール1003は、第1のウェイクアップ手段及びデバッグ手段を含む。
第1のウェイクアップ手段は、ウェイクアップコマンドに応じて中断された目標デバッグモジュールをウェイクアップするためのものである。
デバッグ手段は、記憶された第2のデバッグコマンドを取得し、記憶された第2のデバッグコマンドに応じてウェイクアップされた目標デバッグモジュールをデバッグするためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第1の送信モジュールをさらに含んでもよい。
第1の送信モジュールは、ミニプログラムが目標デバッグモジュールまで実行されたことを確定した場合、目標デバッグモジュールを中断する前にミニプログラムの現在の実行データを送信するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第2の中断モジュール及び第2のデバッグモジュールをさらに含んでもよい。
第2の中断モジュールは、デバッグ結果をフィードバックし、目標デバッグモジュールを再度中断して次の第2のデバッグコマンドを待つためのものである。
第2のデバッグモジュールは、受信された次の第2のデバッグコマンドに応じて目標デバッグモジュールを継続してデバッグするためのものである。
本願の実施例によれば、目標デバッグモジュールは複数ある。このミニプログラムをデバッグする装置1000は、第3の中断モジュール及び第1の実行モジュールをさらに含んでもよい。
第3の中断モジュールは、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第3のデバッグコマンドを待つためのものである。
第1の実行モジュールは、受信された第3のデバッグコマンドに応じて、現在の目標デバッグモジュールを中断し、次の目標デバッグモジュールまでミニプログラムを継続して実行するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第4の中断モジュール及び第2の実行モジュールをさらに含んでもよい。
第4の中断モジュールは、現在の目標デバッグモジュールのデバッグ結果をフィードバックし、現在の目標デバッグモジュールを中断して第4のデバッグコマンドを待つためのものである。
第2の実行モジュールは、受信された第4のデバッグコマンドに応じて現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルし、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1000は、第2の送信モジュールをさらに含んでもよい。
第2の送信モジュールは、目標デバッグモジュールに対する選択をキャンセルした後に、目標デバッグモジュールに対する選択がキャンセルされたことを示す解放メッセージを送信するためのものである。
本願の実施例によれば、目標デバッグモジュールを選択することと、ミニプログラムの実行することと、目標デバッグモジュールをデバッグすることとは第1のスレッドで行われ、第1のデバッグコマンド及び第2のデバッグコマンドは第2のスレッドで受信され、デバッグ結果は第2のスレッドでフィードバックされる。
本願の実施例によれば、ミニプログラムの実行はシミュレーション環境又は実際の環境で行われる。
図11は、本願の一実施例による、ミニプログラムをデバッグする装置のブロック図である。
図11に示すように、このミニプログラムをデバッグする装置1100は、第1の送信モジュール1101と、第2の送信モジュール1102と、第1の受信モジュール1103とを含んでもよい。
第1の送信モジュール1101は、複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択するように指示する第1のデバッグコマンドを送信するためのものである。
第2の送信モジュール1102は、ミニプログラムが目標デバッグモジュールまで実行された時の実行データを受信したことに応答して、目標デバッグモジュールをデバッグするための第2のデバッグコマンドを送信するためのものである。
第1の受信モジュール1103は、目標デバッグモジュールのデバッグ結果を受信するためのものである。
本願の実施例によれば、このミニプログラムをデバッグする装置1100は、第3の送信モジュールを含んでもよい。
第3の送信モジュールは、フィードバックされたデバッグ結果を受信したことに応答して、第3のデバッグコマンド及び第4のデバッグコマンドのうちの少なくとも1つを送信するためものであり、第3のデバッグコマンドは、現在の目標デバッグモジュールを終了し、次の目標デバッグモジュールまでミニプログラムを継続して実行するように指示し、第4のデバッグコマンドは、現在の目標デバッグモジュールを終了し、目標デバッグモジュールに対する選択をキャンセルし、第1のデバッグコマンドを再度受信するまで、ミニプログラムを継続して実行するように指示する。
本願の実施例によれば、このミニプログラムをデバッグする装置1100は、第2の受信モジュールをさらに含んでもよい。
第2の受信モジュールは、目標デバッグモジュールに対する選択がキャンセルされたことを示す解放メッセージを受信するためのものである。
本願の実施例によれば、本願は電子機器、コンピュータ読取可能な記憶媒体及びコンピュータプログラムをさらに提供する。前記コンピュータプログラムの命令がプロセッサにより実行されることで上述したような方法を実現する。
図12に示すように、本願の一実施例による、ミニプログラムをデバッグする方法の電子機器のブロック図である。電子機器とは、様々な形式のデジタルコンピュータ、例えば、ラップトップ型コンピュータと、デスクトップコンピュータと、ワークステーションと、パーソナル・デジタル・アシスタントと、サーバと、ブレードサーバと、大型コンピュータと、他の適宜なコンピュータとを表す旨である。電子機器は、様々な形式の移動装置、例えば、パーソナル・デジタル・アシスタントと、セルラー電話と、スマートフォンと、ウェアラブル機器と、他の類似する計算装置とを表してもよい。本明細書に示す部品と、それらの接続及び関係と、それらの機能とは単に例示であり、本明細書で説明した及び/又は要求した本願の実現を限定することを意図しない。
図12に示すように、この電子機器1200は、1つ又は複数のプロセッサ1201、メモリ1202、及び各部品を接続するための、高速インターフェース及び低速インターフェースを含むインターフェースを備える。各部品は、異なるバスで互いに接続され、且つ共通のメインボード上に実装されてもよく、又は必要に応じて他の方式で実装されてもよい。プロセッサは、電子機器内で実行されるコマンドを処理することができ、メモリ中に記憶されて、外部入力・出力装置(例えば、インターフェースに結合する表示機器)上にGUIの図形情報を表示するコマンドを含む。他の実施形態においては、必要に応じて、複数のプロセッサ及び/又は複数のバスを複数のメモリと一緒に使用してもよい。同様に、複数の電子機器を接続して、各機器が一部の必要な操作を提供してもよい(例えば、サーバアレー、一組のブレードサーバ、又はマルチプロセッサシステムとする)。図12においては、1つのプロセッサ1201の例を示す。
メモリ1202は、本願が提供する非一時的なコンピュータ読取可能な記憶媒体である。ただし、前記メモリには少なくとも1つのプロセッサにより実行可能なコマンドが記憶されており、前記少なくとも1つのプロセッサに本願が提供するミニプログラムをデバッグする方法を実行させる。本願の非一時的なコンピュータ読取可能な記憶媒体は、コンピュータコマンドを記憶しており、このコンピュータコマンドは、コンピュータに本願が提供するミニプログラムをデバッグする方法を実行させる。
メモリ1202は、非一時的なコンピュータ読取可能な記憶媒体として、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能なプログラム及びモジュール、例えば、本願の実施例におけるミニプログラムをデバッグする方法に対応するプログラムコマンド・モジュール(例えば、図10に示す選択モジュール1001、第1の中断モジュール1002及び第1のデバッグモジュール1003、及び/又は、図11に示す第1の送信モジュール1101、第2の送信モジュール1102及び第1の受信モジュール1103)を記憶するために用いられる。プロセッサ1201は、メモリ1202に記憶されている非一時的なソフトウェアプログラム、コマンド及びモジュールを実行することで、サーバの各種機能アプリケーション及びデータ処理を実行する。即ち、上記方法実施例におけるミニプログラムをデバッグする方法を実現する。
メモリ1202は、プログラム記憶領域及びデータ記憶領域を含んでもよく、プログラム記憶領域は、オペレーティングシステムや少なくとも1つの機能に必要なアプリケーションプログラムを記憶してもよく、データ記憶領域は、ミニプログラムをデバッグする方法の電子機器1200の使用により生成されたデータ等を記憶してもよい。また、メモリ1202は、高速ランダムアクセスメモリを含んでもよく、非一時的なメモリ、例えば、少なくとも1つの磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の非一時的なソリッド記憶デバイスを含んでもよい。一部の実施例において、メモリ1202は選択的にプロセッサ1201に対して遠隔に設けられたメモリを含んでもよく、これらの遠隔メモリは、ネットワークを介してミニプログラムをデバッグする方法の電子機器1200に接続されてもよい。上記ネットワークの例示としては、インターネット、イントラネット、ローカルエリアネットワーク、移動通信ネットワーク及びそれらの組合が含まれるが、これらに限られない。
ミニプログラムをデバッグする方法の電子機器1200は、入力装置1203及び出力装置1204をさらに含んでもよい。プロセッサ1201、メモリ1202、入力装置1203及び出力装置1204は、バス又は他の方式で接続されてもよく、図12においてはバスを介して接続される例を示す。
入力装置1203は、入力されたデジタル又はキャラクター情報を受信し、ミニプログラムをデバッグする方法の電子機器1200のユーザ設定及び機能制御に関わるキー信号入力を発生してもよく、例えば、タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、インジケーターロッド、1つ又は複数のマウスボタン、トラックボール、レバー等の入力装置である。出力装置1204は、表示デバイスと、補助照明装置(例えば、LED)と、触覚フィードバック装置(例えば、振動モーター)等を含んでもよい。この表示デバイスは、液晶ディスプレー(LCD)と、発光ダイオード(LED)ディスプレーと、プラズマディスプレーとを含むが、これらに限られない。一部の実施形態において、表示デバイスはタッチスクリーンであってもよい。
ここで説明したシステム及び技術の各実施形態は、デジタル電子回路システム、集積回路システム、専用ASIC(専用集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組合せで実現されてもよい。これらの各実施形態は、1つ又は複数のコンピュータプログラムで実施されることを含んでもよく、この1つまたは複数のコンピュータプログラムが、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行及び/又は解釈されてもよく、このプログラマブルプロセッサは、専用又は共通のプログラマブルプロセッサであってもよく、記憶システムと、少なくとも1つの入力装置と、少なくとも1つの出力装置とからデータと命令とを受信し、データと命令とをこの記憶システムと、この少なくとも1つの入力装置と、この少なくとも1つの出力装置とに伝送してもよい。
これらの計算プログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも称する)は、プログラマブルプロセッサの機械命令を含み、高級プロセス及び/又はオブジェクト指向のプログラミング言語、及び/又はアセンブリ・機械言語によってこれらの計算プログラムを実施してもよい。本明細書で使用した術語「機械読取可能な媒体」及び「コンピュータ読取可能な媒体」とは、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、機器、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を意味しており、機械読取可能な信号である機械命令を受ける機械読取可能な媒体を含む。術語「機械読取可能な信号」とは、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意の信号を意味している。
ユーザとのインタラクションを提供するために、コンピュータでここで説明したシステム及び技術を実施してもよく、このコンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレー)モニタ)と、キーボード及び指向装置(例えば、マウス又はトラックボール)とを有し、ユーザは、このキーボード及びこの指向装置によって、入力をコンピュータに提供することができる。他の種類の装置は、ユーザとのインタラクションを提供するためのものであってもよく、例えば、ユーザに提供するフィードバックは、任意の形式のセンサーフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(声入力、語音入力、又は触覚入力を含む)でユーザからの入力を受信してもよい。
ここで説明したシステム及び技術は、バックグラウンド部品を含む計算システム(例えば、データサーバとする)、又はミドルウェア部品を含む計算システム(例えば、アプリケーションサーバ)、又はフロントエンド部品を含む計算システム(例えば、グラフィカル・ユーザー・インターフェース又はネットワークブラウザを有するユーザコンピュータ、ユーザはこのグラフィカル・ユーザー・インターフェース又はこのネットワークブラウザを介してここで説明したシステム及び技術の実施形態とインタラクトすることができる)、又はこのようなバックグラウンド部品、ミドルウェア部品、或いはフロントエンド部品の任意の組合せを含む計算システムで実施されてもよい。任意の形式又は媒体のデジタルデータ通信(例えば、通信ネットワーク)を介してシステムの部品を相互に接続してもよい。通信ネットワークの例示は、ローカルエリアネットワーク(LAN)と、広域ネットワーク(WAN)と、インターネットとを含む。
コンピュータシステムは、クライアントとサーバとを含んでもよい。クライアントとサーバとは、一般的に互いに離れて、且つ通常に通信ネットワークを介してインタラクトする。相応するコンピュータで実行されるとともに、互いにクライアント-サーバの関係を有するコンピュータプログラムによって、クライアントとサーバとの関係を形成する。
本願の実施例の技術案によれば、第1のデバッグコマンドに応じて複数のデバッグモジュールのうちの少なくとも1つのデバッグモジュールを目標デバッグモジュールとして選択し、ミニプログラムを実行し、ミニプログラムが目標デバッグモジュールまで実行された時に目標デバッグモジュールを中断し、第2のデバッグコマンドに応じて、中断された目標デバッグモジュールをウェイクアップしてデバッグし、デバッグ結果を生成する。目標デバッグモジュールまで実行された時に中断してデバッグコマンドを待ち、デバッグコマンドが到着した後に目標デバッグモジュールをウェイクアップしてデバッグするため、ミニプログラムのブレークポイントデバッグを実現し、デバッグ効率を向上させることができる。
上記に示した様々な形式のフローを利用して、ステップを並び替え、追加又は削除することができると理解すべきである。例えば、本願に記載された各ステップは、並行に実行されてもよいし、順に実行されてもよいし、異なる順序で実行されてもよく、本願が開示した技術案が所望する結果を実現できる限り、本文はこれについて限定しない。
上述した具体的な実施形態は、本願の保護範囲に対する限定を構成しない。当業者は、設計要求や他の要因に応じて、さまざまな修正、組合、サブ組合及び置換を行うことができると理解すべきである。本願の趣旨及び原則の範囲内になされた任意の修正、等価な置