ホームページ テクノロジー周辺機器 IT業界 Pythonエラーをデバッグする方法

Pythonエラーをデバッグする方法

Feb 15, 2025 am 11:34 AM

Pythonエラーの詳細な理解:IntrospectionとDebuggerを使用した効率的なトラブルシューティング

この記事では、Pythonの内省およびPDBなどのデバッグツールを使用して、プログラムエラーを効率的にデバッグする方法について説明します。この記事は、典型的なエラー情報分析、PDBデバッガーの使用、生産環境のデバッグ、および読者がPythonデバッグスキルを向上させるためのよくある質問の側面から開発されます。

How to Debug Python Errors

Pythonの強力な内省により、ランタイムエラーをより深く理解することができます。関数の呼び出しパラメーターを含むコールスタック内のすべてのフレームをチェックすることにより、エラーをより簡単に再現して理解できます。 Sentryなどのツールは、この機能を最大限に活用して、より豊富なエラーコンテキスト情報を提供します。

一般的なPythonエラーの例を見てみましょう

このエラーメッセージは、エラーのタイプと場所のみを指示しますが、エラーの原因を直接指摘することはできません。 整数または非運動が渡されると推測する必要があるかもしれませんが、実際の状況は多様である可能性があります。
<code>TypeError: expected string or buffer
  File "sentry/stacktraces.py", line 309, in process_single_stacktrace
    processable_frame, processing_task)
  File "sentry/lang/native/plugin.py", line 196, in process_frame
    in_app = (in_app and not self.sym.is_internal_function(raw_frame.get('function')))
  File "sentry/lang/native/symbolizer.py", line 278, in is_internal_function
    return _internal_function_re.search(function) is not None</code>
ログイン後にコピー

ログレコードとPDBデバッガー

単純なデバッグ方法は、ロギングを追加することです:

これは、開発中にさまざまなタイプを理解するのに役立ちます。ただし、生産環境では、このアプローチは、デバッグレベルのログの冗長性のために理想的ではありません。
import logging
# ...
logging.debug("function is of type %s", type(function))
ログイン後にコピー
この時点で、Pythonデバッガー(PDB)が役立ちます。 PDBを使用すると、ブレークポイントを介してコードを介して、変数とそのタイプを確認できます。 コードに

を挿入することで、ブレークポイントを設定できます:

ブレークポイントのヒット後、import pdb; pdb.set_trace()を使用して変数タイプを表示し、

を使用してローカル変数を表示し、
def is_internal_function(self, function):
    try:
        return _internal_function_re.search(function) is not None
    except Exception:
        import pdb; pdb.set_trace()
        raise
ログイン後にコピー
および

でコールスタックをナビゲートできるPDBインタラクティブ環境に入ります。コマンド。 type(function) locals()down生産環境のデバッグup

生産環境では、CPYTHONランタイムにより、各実行フレームのローカル変数を含む現在のコールスタックにアクセスできます。 トレースバックオブジェクトを含む例外情報を取得できます。 Tracebackオブジェクトを通過することにより、各フレームの属性にアクセスしてローカル変数を表示できます。

Sentryなどのツールは、同様の内省操作を自動的に実行し、コードを手動で追加せずにリッチなエラーコンテキスト情報を提供します。

sys.exc_info() f_locals

exc_type, exc_value, tb = sys.exc_info()
inner_frame = tb.tb_next.tb_frame # 可能需要遍历tb_next找到合适的frame
pprint(inner_frame.f_locals)
ログイン後にコピー

faq

How to Debug Python Errors この記事では、最終的にPythonエラーのデバッグに関するFAQを提供し、一般的なエラータイプ、PDB使用、IDEデバッグ、例外ハンドリング、リモートデバッグ、マルチスレッドデバッグ、サードパーティライブラリデバッグ、パフォーマンスの問題、デバッグスキルの改善などをカバーします。 。

この記事の一部の内容は、Sentryの記事から採用されています。 SitePointをサポートしてくれたパートナーに感謝します。

以上がPythonエラーをデバッグする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AWS ECSとLambdaを備えたサーバーレス画像処理パイプライン AWS ECSとLambdaを備えたサーバーレス画像処理パイプライン Apr 18, 2025 am 08:28 AM

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

2025年に購読する上位21の開発者ニュースレター 2025年に購読する上位21の開発者ニュースレター Apr 24, 2025 am 08:28 AM

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください

CNCFは、ARM64およびx86のプラットフォームパリティブレークスルーをトリガーします CNCFは、ARM64およびx86のプラットフォームパリティブレークスルーをトリガーします May 11, 2025 am 08:27 AM

ARM64アーキテクチャのオープンソースソフトウェアのCI/CDパズルとソリューション ARM64アーキテクチャにオープンソースソフトウェアを展開するには、強力なCI/CD環境が必要です。ただし、ARM64のサポートレベルと従来のX86プロセッサアーキテクチャには違いがありますが、これはしばしば不利な点にあります。複数のアーキテクチャのインフラストラクチャコンポーネント開発者は、職場環境に一定の期待を持っています。 一貫性:プラットフォーム間で使用されるツールとメソッドは一貫しており、人気の少ないプラットフォームの採用により開発プロセスを変更する必要性を回避します。 パフォーマンス:プラットフォームとサポートメカニズムは、複数のプラットフォームをサポートする際に展開シナリオが不十分な速度によって影響を受けることを保証するための優れたパフォーマンスを備えています。 テストカバレッジ:効率、コンプライアンス、および

カスタム電気通信ソフトウェアの利点 カスタム電気通信ソフトウェアの利点 May 11, 2025 am 08:28 AM

カスタマイズされた通信ソフトウェア開発は、間違いなくかなりの投資です。ただし、長期的には、このようなプロジェクトは、市場で既製のソリューションのように生産性を向上させる可能性があるため、より費用対効果が高い可能性があることに気付くかもしれません。カスタマイズされた通信システムを構築することの最も重要な利点を理解してください。 必要な正確な機能を取得します あなたが購入できる既製の通信ソフトウェアには2つの潜在的な問題があります。生産性を大幅に向上させることができる有用な機能が欠けているものもあります。いくつかの外部統合でそれらを強化することができることもありますが、それは常にそれらを素晴らしいものにするのに十分ではありません。 他のソフトウェアには機能が多すぎて、使用できないほど複雑すぎます。おそらくこれらのいくつかを使用しないでしょう(決して!)。通常、多くの機能が価格に追加されます。 あなたのニーズに基づいています

自動化がAIの意思決定が必要な理由(およびWordwareがどのように配信するか) 自動化がAIの意思決定が必要な理由(およびWordwareがどのように配信するか) May 15, 2025 am 10:47 AM

私たちは皆、ZapierやIFTTTなどの従来の自動化プラットフォームの魔法を経験しています。彼らはアプリケーションを接続し、単純な「これの場合、その「その場合」シーケンス:新しいフォームの送信がスプレッドシート行を作成し、着信メッセージがスラックアラートをトリガーするのが得意です。シンプルで効果的で、基本的なタスクのための大きな時間を節約します。しかし、あなたの実際のワークフローはどれほど簡単ですか?ワークフローが微妙なコンテキストを理解したり、エラーを優雅に処理したり、構造化されていないデータを処理したりする必要がある場合、これらのツールはしばしば障害に遭遇します。それらのシンプルさにより使いやすくなりますが、制限にもなります。単純なルールでは不十分な場合:カスタマーサポートを検討してください。チャットクリップ、スクリーンショット、複雑なユーザー図面など、チケットシステムに注がれた非構造化データ

See all articles