ホームページ バックエンド開発 Python チュートリアル Linux環境でpdbを使用してPythonをデバッグする方法

Linux環境でpdbを使用してPythonをデバッグする方法

Mar 30, 2018 pm 04:20 PM
linux python デバッグ


pdb は Python に付属するパッケージで、Python プログラムの対話型ソース コード デバッグ機能を提供します。その主な機能には、ブレークポイントの設定、シングル ステップのデバッグ、関数のデバッグの開始、現在のコードの表示、スタック フラグメントの表示、および動的変更が含まれます。変数の値などpdb は、一般的に使用されるデバッグ コマンドをいくつか提供します。 ️
p 変数 #変数の値を表示
b 行番号 #break ブレークポイントがどの行に設定されているかr pdb test.py

の使用方法を以下に説明します。デバッグ用のデータベース。


リスト 1. テスト コードの例
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
printfinal

リスト2. pdb を使用してデバッグします
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> b = "bbb"
( Pdb ) n
> /root/epdb1.py(5)?()
-> c = "ccc"
(Pdb) > /root/epdb1.py(6)?()
; Final = a + b + c
(Pdb) リスト
1 import pdb
2 a = "aaa"
3 pdb.set_trace() 4 b = "bbb"
5 c = "ccc"
6 -> a + b + c
7 印刷最終
[EOF]
(Pdb)
[EOF]
(Pdb) n
> /root/epdb1.py(7)?()
-> )

変数の値を出力する: デバッグ中に変数の値を出力する必要がある場合は、 p と変数名を直接使用できますが、出力では現在のステートメントの後の特定の値のみが表示されることに注意してください。が実行された場合、NameError: エラーが報告されます。

リスト 3. デバッグプロセス中に変数を出力する
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> bbb"
(Pdb) n
> /root/epdb1.py(5)?()
-> c = "ccc"
(Pdb) p b
'bbb'
(Pdb)
'bbb'
( Pdb) n
> /root/epdb1.py(6)?()
-> Final = a + b + c
(Pdb) p c
'ccc'
(Pdb) p Final
*** NameError: (Pdb) n
> /root/epdb1.py(7)?()
-> 最終
'aaabbbccc'
(Pdb)

c を使用して現在のデバッグを停止し、プログラムの実行を継続できるようにします。次のプログラムにさらに set_statement() ステートメントがある場合、リーダーはコードの最終出力の前に set_trace() 検証を追加できます。


リスト 4. デバッグを停止し、プログラムの実行を続行します
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> b = "bbb"
(Pdb) n
> /root/epdb1.py(5)?()
-> c = "ccc"
(Pdb) c
aaabbbccc

コードの表示: 現在のコード ブロックはデバッグ中に記憶されていない場合があります。特定のコード ブロックを表示したい場合は、list または l コマンドを使用して表示できます。 list は、矢印 -> を使用して現在のデバッグ ステートメントを指します。

リスト 6. デバッグプロセス中に表示されるコード
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> bbb"
(Pdb) リスト
1 "インポート pdb
2 a = "aaa"
3 pdb.set_trace()
4 -> b = "bbb"
5 c = "ccc"
6 Final = a + b + c
7 pdb.set_trace()
8 最終を印刷
[EOF]
(Pdb) c
> /root/epdb1.py(8)?()
-> 最終を印刷
(Pdb) 3 pdb .set_trace() 4 )


関数を使用したデバッグ


リスト 6. 関数の使用例
import pdb
def combin(s1,s2): # サブルーチン結合を定義します。これは...
s3 = s1 + s2 + s1 # s2 を s1 のコピーの間に挟みます, ...
s3 = '"' + s3 +'"' # 二重引用符で囲みます,...
return s3 #
a = "aaa"
を返します。 pdb.set_trace ()
b = "bbb"
c = "ccc"
Final = combine(a,b)
printfinal


デバッグに n を直接使用すると、次の文が得られます。final=combine(a ,b) これを通常の代入ステートメントとして扱い、print Final と入力します。関数をデバッグしたい場合は、 s を使用して関数ブロックに直接入ることができます。関数のシングルステップ デバッグは、上記の概要と似ています。関数をステップ実行したくない場合は、ブレークポイントで直接 r を押して呼び出し元に戻ることができます。

清单 7. デバッグを実行します
[root@rcc-pok-idg-2255 ~]# python epdb2.py
> /root/epdb2.py(10)?()
-> b = "bbb"
(Pdb) n
> /root/epdb2.py(11)?()
-> c = "ccc"
(Pdb) n
> /root/epdb2.py(12)?()
-> Final = combin(a,b)
(Pdb) s
--Call--
> /root/epdb2.py(3)combine()
-> def combin(s1,s2): # サブルーチン結合を定義します。これは...
(Pdb) n
> /root/epdb2.py(4)combine()
-> s3 = s1 + s2 + s1 # s2 を s1 のコピーの間に挟みます, ...
(Pdb) list
1 import pdb
2
3 def combin(s1,s2): # サブルーチン結合を定義します...
4 ->     s3 = s1 + s2 + s1 # s2 を s1 のコピーで挟みます, ...
5 s3 = '"' + s3 +'"' # 二重引用符で囲みます,...
6 return s3 # 返します。 
7
8 a = "aaa"
9 pdb.set_trace()
10 b = "bbb"
11 c = "ccc"
(Pdb) n
> /root/epdb2.py(5)combine()
-> s3 = '"' + s3 +'"' # 二重引用符で囲みます...
(Pdb) n
> /root/epdb2.py(6)combine()
-> return s3 # そしてそれを返します。 
(Pdb) n
--Return--
> /root/epdb2.py(6)combine()->'"aabbbaaa"'
-> return s3 # そしてそれを返します。 
(Pdb) n
> /root/epdb2.py(13)?()
-> print Final
(Pdb)


調整時に値を動的に変更できます。特に次の例のように、次のような制限があることに注意してください。 b の評価値を再変更することを考えています。b を使用してください。关推荐:


Pdb库调试Pythonの方式および常用コマンド

UsePDBモード调试Python程序介绍

UsePDB简单调试Python程序简明指南

以上がLinux環境でpdbを使用して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)

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Linuxアーキテクチャ:5つの基本コンポーネントを発表します Linuxアーキテクチャ:5つの基本コンポーネントを発表します Apr 20, 2025 am 12:04 AM

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Python vs. C:曲線と使いやすさの学習 Python vs. C:曲線と使いやすさの学習 Apr 19, 2025 am 12:20 AM

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Laravelインストールコード Laravelインストールコード Apr 18, 2025 pm 12:30 PM

Laravelをインストールするには、これらの手順を順番に進みます。コンポーザー(MacOS/LinuxとWindows用)インストールLaravelインストーラーをインストールします。

Python vs. C:パフォーマンスと効率の探索 Python vs. C:パフォーマンスと効率の探索 Apr 18, 2025 am 12:20 AM

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

See all articles