首页 - 新闻 - 如何在python中调试函数_使用函数 - python断点调试方法

如何在python中调试函数_使用函数 - python断点调试方法

2023-10-05 03:59

列表7.函数使用示例

导入pdb

def bond(s1, s2): # 定义子程序combine,其中...

s3 = s1 + s2 + s1 # 将 s2 夹在 s1 的副本之间,. 。 。

s3 = ‘“’ + s3 +‘”’ # 用双引号括起来。 。 。

return s3 # 并返回它。

a = “aaa”

pdb.set_trace()

b = “bbb”

c = “ccc”

最终=组合(a,b)

最终打印

如果直接使用n进行调试,当到达final=combine(a, b)这句话时,就会被当成普通的赋值语句,进入print final。如果你想调试一个函数怎么办?可以直接使用s进入功能块。功能中的单步调试与上面的介绍类似。如果不想单步执行该函数,可以在断点处直接按r退出到调用处。

清单 8. 调试函数

[root@rcc-pok-idg-2255 ~]# python www.gsm-guard.net

》/root/www.gsm-guard.net(10)? ()

-》b=“bbb”

(Pdb) n

》/root/www.gsm-guard.net(11)? ()

-》c = “ccc”

(Pdb) n

》/root/www.gsm-guard.net(12)? ()

-》最终=组合(a,b)

(Pdb) s

--呼叫--

》/root/www.gsm-guard.net(3)combine()

-》 def merge(s1,s2): # 定义子程序combine,其中..

(Pdb) n

》 /root/www.gsm-guard.net(4)combine()

-》s3 = s1 + s2 + s1 # 将s2夹在s1的副本之间,。。

(Pdb)列表

导入pdb

def merge(s1,s2): # 定义子程序combine,其中..

-》s3 = s1 + s2 + s1 # 将s2夹在s1的副本之间,。。

s3 = ‘“’ + s3 +‘”’ #用双引号括起来,。。

return s3 # 并返回它。

a = “aaa”

pdb.set_trace()

b = “bbb”

c = “ccc”

(Pdb) n

》 /root/www.gsm-guard.net(5)combine()

-》 s3 = ‘“’ + s3 +‘”’ # 用双引号括起来,。。

(Pdb) n

》 /root/www.gsm-guard.net(6)combine()

-》return s3 #并返回。

(Pdb) n

--返回--

》/root/www.gsm-guard.net(6)combine()-》‘“aaabbbaaa”’

-》return s3 #并返回。

(Pdb) n

》/root/www.gsm-guard.net(13)?()

-》打印最终版

(Pdb)

在调试时动态更改值。该变量的值可以在调试过程中动态更改,如下例所示。需要注意的是,下面有一个错误。原因是b已经被赋值了。如果你想改变b的赋值,你应该使用它! B、

清单 9. 调试时动态更改值

[root@rcc-pok-idg-2255 ~]# python www.gsm-guard.net

》/root/www.gsm-guard.net(10)? ()

-》b=“bbb”

(Pdb) var = “1234”

(Pdb) b = “avfe”

*** 指定的对象‘=“avfe”’不是函数

或未在 sys.path 中找到。

(Pdb)! b=“afdfd”

(Pdb)

pdb调试的一个明显缺陷是它对多线程、远程调试等支持不够好。同时它没有相对直观的界面显示,因此不适合大型Python项目。在较大的Python项目中,这些调试需求更为常见,因此需要使用更高级的调试工具。