Python脚本的内部各函数之间的调用关系

开发 后端
你想了解Python脚本的内部各函数之间的调用的实际应用的话,你就可以浏览以下的文章,对Python脚本的内部各函数之间时如何调用有所了解。

通过堆栈我们可以很清楚的看到关于Python脚本的内部各函数之间的调用关系, 那么以下的文章主要是介绍我们怎么查看相关函数的内变量情况,希望你在看完这篇文章会有所收获。

正如大家所, python内部堆栈和函数的调用由PyEval_EvalFrameEx完成的, 一次PyEval_EvalFrameEx意味着一次函数调用,象上面的第19,13,10行分别对应于main, segv_test, freeNode函数, 将gdb定位到对应行后,使用pylocals宏即可查看该函数内部变量的详细情况。

  1. (gdb) up 13  
  2. #13 0x007d6d2b in PyEval_EvalFrameEx 
    (
    f=0x81242fcthrowflag=0) at Python/ceval.c:2370  
  3. 2370 in Python/ceval.c  
  4. (gdb) pylocals  
  5. s:  
  6. object : 
    '
    <html><body><div><a><a></a></a><a></a></div></body></html>'  
  7. type : str  
  8. refcount: 3  
  9. address : 0xb7f64440  
  10. options:  
  11. object : 97  
  12. type : int  
  13. refcount: 7  
  14. address : 0x8082c20  
  15. doc:  
  16. object : <xmlDoc (None) object at 0xb7cc04ec> 
  17. type : instance  
  18. refcount: 1  
  19. address : 0xb7cc04ec  
  20. ctxt:  
  21. object : <libxml2.xpathContext instance at 0xb7f70ccc> 
  22. type : instance  
  23. refcount: 1  
  24. address : 0xb7f70ccc  
  25. nodes:  
  26. object : [<xmlNode ((儓X? object at 0xb7cc0cac>]  
  27. type : list  
  28. refcount: 2  
  29. address : 0xb7f70a8c  
  30. note:  
  31. object : <xmlNode ((?圶? object at 0xb7cc0cac> 
  32. type : instance  
  33. refcount: 2  
  34. address : 0xb7cc0cac  
  35. nexts:  
  36. object : [<xmlNode (hhX? object at 0xb7cc750c>,
     
    <xmlNode (HXX? object at 0xb7cc76cc>
    <xmlNode (@XX? object at 0xb7c9348c>]  
  37. type : list  
  38. refcount: 1  
  39. address : 0xb7f4ce4c  

Python脚本调试时断点的设置是个很麻烦的东西,我所能想到的有两种方法:

1 根据函数的python源码进行断点设置;

2 采用sleep函数和ctrl+c来中断程序的运行。

无论怎么样使用逐条执行进行调试都是很痛苦的事情,因为这个时候python解释器本身要做很多工作。 由于本身对于python源码不是很熟悉,因此对如何使用gdb对python脚本调试上也只是很粗略的理解, 这里权当抛砖引玉, 欢迎达人们给出分享的经验。以上就是对Python脚本内部各函数的调用关系, 以及如何查看函数内变量情况相关的内容的介绍,望你会有所收获。

【编辑推荐】

  1. 搭建Python Web环境所需要的相关步骤介绍
  2. 用Python生成不依赖dll的exe的操作步骤简介
  3. Python标准库的强大功能的相关介绍
  4. Python脚本与C++程序互相调用的实际操作
  5. Python嵌入c中时应该链接的库有哪些
责任编辑:佚名 来源: 互联网
相关推荐

2012-09-20 10:30:07

Linuxtty框架uart框架

2023-11-23 19:30:35

Python编程语言

2009-06-25 14:46:50

JDKJREJVM

2020-11-02 08:15:00

Python数据开发

2023-10-27 08:52:03

Python脚本关系

2010-02-04 17:16:33

C++调用python

2012-05-31 14:54:59

Hadoop大数据

2010-08-03 16:21:54

FlexFlash

2020-05-12 16:58:05

LinuxUnix技术

2015-03-09 11:01:43

2021-06-11 06:54:34

原型构造函数

2021-07-13 19:33:41

大数据云计算

2009-06-22 16:34:30

框架架构设计模式

2009-01-19 13:35:57

ETLEAI数据仓库

2023-10-26 11:37:35

函数Python

2009-07-06 15:47:11

Servlet API

2021-05-17 10:21:01

边缘计算物联网IOT

2018-08-14 05:05:25

2010-06-12 16:47:11

网络层次协议

2011-02-23 14:38:45

网络协议
点赞
收藏

51CTO技术栈公众号