Remix では、コントラクトを展開するか、トランザクションを実行します。
(タブ内の Deploy & Run
)トランザクションリストに移動し、関心のあるトランザクションの横にある「バグ」アイコンをクリックします。 これにより、デバッガが起動します。
デバッガに入ったら、次の操作を行います。
ナビゲーション: ステップコントロールを使用して、トランザクションの各操作をナビゲートします。 関数をステップオーバーしたり、関数にステップインしたり、関数からステップアウトしたり、特定のステップにジャンプしたりできます。
詳細パネル: このパネルには、オペコードの詳細、現在の実行ステップ、およびその他の関連する詳細が表示されます。
Solidity Locals: ローカルのSolidity変数とその現在の値を表示します。
状態: 契約の状態の変化を表示します。 ガス料金が高くなる可能性のある予期しない変更を特定するのに最適な場所です。
呼び出し履歴: 現在の関数呼び出し履歴を示します。 現在の実行コンテキストを理解するのに役立ちます。
ストレージの変更: 実行中にストレージへの変更が強調表示されます。 ガス最適化の潜在的な領域を特定するのに役立ちます。
デバッガはバグを修正するためだけのものではありません。また、契約のガス使用量をプロファイリングするための優れたツールでもあります。 これを最大限に活用する方法は次のとおりです。
ガスの多いステップを特定する: コードをステップ実行しながら、各ステップでのガス使用量を監視します。 高いガスステップは最適化ターゲットになる可能性があります。
ストレージアクションの監視:過度のストレージ変更、特にそうでない delete
変更は、ガスを大量に消費する可能性があります。
関数呼び出し: 外部関数呼び出し (特に他のコントラクト) は、コストがかかる場合があります。 それらが必須であることを確認してください。
Remix Debugger を簡単なコントラクトで使用してみましょう。
硬度
プラグマの堅実さ^0.8.9;
契約 GasProfiler {
uint256パブリックカウント。
function setCount(uint256 _count) public {
for (uint256 i = 0; i < _count; i++) {
count += i;
}
}
}
Remix でコントラクトを展開して操作します。
関数で setCount
デバッガーを使用して、ガスを大量に消費する操作を特定します。 ここで、ループ動作は増加するにつれて _count
より多くのガスを消費します。
Remix Debuggerを理解し、最大限に活用することは、問題の診断に役立つだけでなく、契約をガス効率の高いものにするためにも役立つスキルです。 コードをステップ実行することで、上位レベルでは明らかではない非効率性を見つけることができます。
Remix では、コントラクトを展開するか、トランザクションを実行します。
(タブ内の Deploy & Run
)トランザクションリストに移動し、関心のあるトランザクションの横にある「バグ」アイコンをクリックします。 これにより、デバッガが起動します。
デバッガに入ったら、次の操作を行います。
ナビゲーション: ステップコントロールを使用して、トランザクションの各操作をナビゲートします。 関数をステップオーバーしたり、関数にステップインしたり、関数からステップアウトしたり、特定のステップにジャンプしたりできます。
詳細パネル: このパネルには、オペコードの詳細、現在の実行ステップ、およびその他の関連する詳細が表示されます。
Solidity Locals: ローカルのSolidity変数とその現在の値を表示します。
状態: 契約の状態の変化を表示します。 ガス料金が高くなる可能性のある予期しない変更を特定するのに最適な場所です。
呼び出し履歴: 現在の関数呼び出し履歴を示します。 現在の実行コンテキストを理解するのに役立ちます。
ストレージの変更: 実行中にストレージへの変更が強調表示されます。 ガス最適化の潜在的な領域を特定するのに役立ちます。
デバッガはバグを修正するためだけのものではありません。また、契約のガス使用量をプロファイリングするための優れたツールでもあります。 これを最大限に活用する方法は次のとおりです。
ガスの多いステップを特定する: コードをステップ実行しながら、各ステップでのガス使用量を監視します。 高いガスステップは最適化ターゲットになる可能性があります。
ストレージアクションの監視:過度のストレージ変更、特にそうでない delete
変更は、ガスを大量に消費する可能性があります。
関数呼び出し: 外部関数呼び出し (特に他のコントラクト) は、コストがかかる場合があります。 それらが必須であることを確認してください。
Remix Debugger を簡単なコントラクトで使用してみましょう。
硬度
プラグマの堅実さ^0.8.9;
契約 GasProfiler {
uint256パブリックカウント。
function setCount(uint256 _count) public {
for (uint256 i = 0; i < _count; i++) {
count += i;
}
}
}
Remix でコントラクトを展開して操作します。
関数で setCount
デバッガーを使用して、ガスを大量に消費する操作を特定します。 ここで、ループ動作は増加するにつれて _count
より多くのガスを消費します。
Remix Debuggerを理解し、最大限に活用することは、問題の診断に役立つだけでなく、契約をガス効率の高いものにするためにも役立つスキルです。 コードをステップ実行することで、上位レベルでは明らかではない非効率性を見つけることができます。