Bài học 4

Remix Debugger と Advanced Gas Insights

高度な最適化に入る前に、リミックスデバッガの適切な使用方法を理解することが重要です。 デバッガは、各操作に関する詳細情報を提供するため、コード内のガスの非効率性を検出するために不可欠なツールになります。

デバッガの起動

  1. Remix では、コントラクトを展開するか、トランザクションを実行します。

  2. (タブ内の Deploy & Run )トランザクションリストに移動し、関心のあるトランザクションの横にある「バグ」アイコンをクリックします。 これにより、デバッガが起動します。

デバッガの使用

デバッガに入ったら、次の操作を行います。

  1. ナビゲーション: ステップコントロールを使用して、トランザクションの各操作をナビゲートします。 関数をステップオーバーしたり、関数にステップインしたり、関数からステップアウトしたり、特定のステップにジャンプしたりできます。

  2. 詳細パネル: このパネルには、オペコードの詳細、現在の実行ステップ、およびその他の関連する詳細が表示されます。

  3. Solidity Locals: ローカルのSolidity変数とその現在の値を表示します。

  4. 状態: 契約の状態の変化を表示します。 ガス料金が高くなる可能性のある予期しない変更を特定するのに最適な場所です。

  5. 呼び出し履歴: 現在の関数呼び出し履歴を示します。 現在の実行コンテキストを理解するのに役立ちます。

  6. ストレージの変更: 実行中にストレージへの変更が強調表示されます。 ガス最適化の潜在的な領域を特定するのに役立ちます。

Gas Insightsのデバッガによるプロファイリング

デバッガはバグを修正するためだけのものではありません。また、契約のガス使用量をプロファイリングするための優れたツールでもあります。 これを最大限に活用する方法は次のとおりです。

  1. ガスの多いステップを特定する: コードをステップ実行しながら、各ステップでのガス使用量を監視します。 高いガスステップは最適化ターゲットになる可能性があります。

  2. ストレージアクションの監視:過度のストレージ変更、特にそうでない delete変更は、ガスを大量に消費する可能性があります。

  3. 関数呼び出し: 外部関数呼び出し (特に他のコントラクト) は、コストがかかる場合があります。 それらが必須であることを確認してください。

実践例

Remix Debugger を簡単なコントラクトで使用してみましょう。

硬度
プラグマの堅実さ^0.8.9;

契約 GasProfiler {
    uint256パブリックカウント。

function setCount(uint256 _count) public {
        for (uint256 i = 0; i < _count; i++) {
            count += i;
        }
    }
}
  1. Remix でコントラクトを展開して操作します。

  2. 関数で setCount デバッガーを使用して、ガスを大量に消費する操作を特定します。 ここで、ループ動作は増加するにつれて _count より多くのガスを消費します。

結論

Remix Debuggerを理解し、最大限に活用することは、問題の診断に役立つだけでなく、契約をガス効率の高いものにするためにも役立つスキルです。 コードをステップ実行することで、上位レベルでは明らかではない非効率性を見つけることができます。

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 4

Remix Debugger と Advanced Gas Insights

高度な最適化に入る前に、リミックスデバッガの適切な使用方法を理解することが重要です。 デバッガは、各操作に関する詳細情報を提供するため、コード内のガスの非効率性を検出するために不可欠なツールになります。

デバッガの起動

  1. Remix では、コントラクトを展開するか、トランザクションを実行します。

  2. (タブ内の Deploy & Run )トランザクションリストに移動し、関心のあるトランザクションの横にある「バグ」アイコンをクリックします。 これにより、デバッガが起動します。

デバッガの使用

デバッガに入ったら、次の操作を行います。

  1. ナビゲーション: ステップコントロールを使用して、トランザクションの各操作をナビゲートします。 関数をステップオーバーしたり、関数にステップインしたり、関数からステップアウトしたり、特定のステップにジャンプしたりできます。

  2. 詳細パネル: このパネルには、オペコードの詳細、現在の実行ステップ、およびその他の関連する詳細が表示されます。

  3. Solidity Locals: ローカルのSolidity変数とその現在の値を表示します。

  4. 状態: 契約の状態の変化を表示します。 ガス料金が高くなる可能性のある予期しない変更を特定するのに最適な場所です。

  5. 呼び出し履歴: 現在の関数呼び出し履歴を示します。 現在の実行コンテキストを理解するのに役立ちます。

  6. ストレージの変更: 実行中にストレージへの変更が強調表示されます。 ガス最適化の潜在的な領域を特定するのに役立ちます。

Gas Insightsのデバッガによるプロファイリング

デバッガはバグを修正するためだけのものではありません。また、契約のガス使用量をプロファイリングするための優れたツールでもあります。 これを最大限に活用する方法は次のとおりです。

  1. ガスの多いステップを特定する: コードをステップ実行しながら、各ステップでのガス使用量を監視します。 高いガスステップは最適化ターゲットになる可能性があります。

  2. ストレージアクションの監視:過度のストレージ変更、特にそうでない delete変更は、ガスを大量に消費する可能性があります。

  3. 関数呼び出し: 外部関数呼び出し (特に他のコントラクト) は、コストがかかる場合があります。 それらが必須であることを確認してください。

実践例

Remix Debugger を簡単なコントラクトで使用してみましょう。

硬度
プラグマの堅実さ^0.8.9;

契約 GasProfiler {
    uint256パブリックカウント。

function setCount(uint256 _count) public {
        for (uint256 i = 0; i < _count; i++) {
            count += i;
        }
    }
}
  1. Remix でコントラクトを展開して操作します。

  2. 関数で setCount デバッガーを使用して、ガスを大量に消費する操作を特定します。 ここで、ループ動作は増加するにつれて _count より多くのガスを消費します。

結論

Remix Debuggerを理解し、最大限に活用することは、問題の診断に役立つだけでなく、契約をガス効率の高いものにするためにも役立つスキルです。 コードをステップ実行することで、上位レベルでは明らかではない非効率性を見つけることができます。

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.