当前位置: 首页 > news >正文

金融公司网站设计图关键词优化需要从哪些方面开展?

金融公司网站设计图,关键词优化需要从哪些方面开展?,网站建设写代码自己怎么创业,wordpress文章 公众号文章目录 1. 启动 pdb 调试器1.1 在代码中插入断点1.2 使用命令行直接调试脚本 2. 常用调试命令2.1 基本命令2.2 高级命令2.3 断点操作 3. 调试过程示例4. 调试技巧4.1 条件断点4.2 自动启用调试4.2.1 运行程序时指定 -m pdb4.2.2在代码中启用 pdb.post_mortem4.2.3 使用 sys.e…

文章目录

    • 1. 启动 pdb 调试器
      • 1.1 在代码中插入断点
      • 1.2 使用命令行直接调试脚本
    • 2. 常用调试命令
      • 2.1 基本命令
      • 2.2 高级命令
      • 2.3 断点操作
    • 3. 调试过程示例
    • 4. 调试技巧
      • 4.1 条件断点
      • 4.2 自动启用调试
        • 4.2.1 运行程序时指定 -m pdb
        • 4.2.2在代码中启用 pdb.post_mortem
        • 4.2.3 使用 sys.excepthook 全局捕获异常
      • 4.3 配合 ipdb 使用
    • 5. 高级用法 bt
      • 5.1. bt 命令作用
      • 5.2 示例代码
      • 5.3. 常见用法
      • 5.4 示例:结合 bt 和 up/down

pdb 是 Python 内置的交互式调试工具,可以帮助开发者逐步调试代码、查看变量、分析问题。以下是 pdb 调试器的详解,包括用法、常见命令及技巧

1. 启动 pdb 调试器

1.1 在代码中插入断点

通过 pdb.set_trace() 设置断点,程序运行到此处时会暂停并进入调试模式。

import pdbdef example_function():x = 10y = 20pdb.set_trace()  # 设置断点z = x + yprint(f"Result: {z}")example_function()

运行程序后,会暂停在set_trace()处,进入交互式调试模式。

1.2 使用命令行直接调试脚本

通过 -m pdb 启动脚本进入调试模式:

python -m pdb script.py

程序会在脚本的第一行暂停,可以逐步执行代码。

运行脚本时加上 -m pdb 参数,发生异常时会自动进入调试模式

python -m pdb script.py

或者在代码中引入

import pdb
pdb.pm()  # 在异常后调用,进入调试模式
  • 正常运行 script.py。
  • 如果程序中发生异常,pdb 会捕获它并进入调试模式。
  • 你可以直接使用调试命令,比如 bt 查看调用栈,或者 l 查看代码。

2. 常用调试命令

2.1 基本命令

在这里插入图片描述

2.2 高级命令

在这里插入图片描述

2.3 断点操作

(1) 设置断点

b 12  # 在第 12 行设置断点
b example_function  # 在函数 example_function 的入口处设置断点
b path/script.py:15  # 在 script.py 的第 15 行设置断点

(2)查看断点

b  # 列出所有断点及其状态

(3)清除断点

cl 1  # 清除断点编号 1
cl    # 清除所有断点

(4)启动、关闭断点

disable 7  # disable breakpoint 7
enable 7   # enable breakpoint 7

(5)条件断点

b path/script.py:20, x > 10  # 在第 script 脚本的第20 行设置断点,只有 x > 10 时断点才生效

3. 调试过程示例

假设以下代码存在问题:

def add_numbers(a, b):result = a + breturn resultdef main():x = 10y = "20"  # Bug: y 是字符串类型z = add_numbers(x, y)print(f"The result is {z}")main()

我们可以用 pdb 调试:

添加断点的方式
将 pdb.set_trace() 添加到代码中

def add_numbers(a, b):result = a + breturn resultdef main():x = 10y = "20"pdb.set_trace()  # 在此处调试z = add_numbers(x, y)print(f"The result is {z}")main()

运行程序并调试:

python script.py

调试流程:

  • 程序暂停在 set_trace(),输入 n 执行下一行代码。
  • 使用 p x p y 查看变量值。
  • 当执行到 add_numbers 时,输入 s 进入函数,逐步查看函数内部。
  • 如果确定错误原因,输入 q 退出调试。

通过命令行调试
直接运行调试命令

python -m pdb script.py

调试流程:

  • 程序在第一行暂停,输入 c 跳到程序出错处。
  • 出现异常时,自动进入调试模式,输入w查看调用栈。
  • 使用p查看变量值,定位问题。

4. 调试技巧

4.1 条件断点

在某些复杂情况下,只在特定条件下暂停:

b 10, x > 50

例如:当变量 x 大于 50 时,才会触发断点。

4.2 自动启用调试

4.2.1 运行程序时指定 -m pdb

运行 Python 脚本时,加上 -m pdb,会在发生异常时自动进入调试模式。

python -m pdb script.py
  • 正常运行 script.py。
  • 如果程序中发生异常,pdb 会捕获它并进入调试模式。
  • 你可以直接使用调试命令,比如 bt 查看调用栈,或者 l 查看代码。
4.2.2在代码中启用 pdb.post_mortem

在代码中,通过捕获异常并调用 pdb.post_mortem(),让程序在异常发生后自动进入调试模式
示例代码

import pdbdef faulty_function():x = 1 / 0  # 人为制造一个异常try:faulty_function()
except Exception:pdb.post_mortem()

工作原理

  • 当 faulty_function 发生异常时,程序会捕获 Exception。
  • 调用 pdb.post_mortem(),进入异常发生时的调试模式。
  • 在调试模式中,可以查看变量值、调用栈等。
4.2.3 使用 sys.excepthook 全局捕获异常

通过覆盖 Python 的全局异常处理机制,任何未捕获的异常都会触发 pdb 调试。

示例代码:

import pdb
import sysdef custom_excepthook(exc_type, exc_value, exc_traceback):print(f"Uncaught exception: {exc_type.__name__}: {exc_value}")pdb.post_mortem(exc_traceback)# 设置全局异常处理
sys.excepthook = custom_excepthook# 测试代码
def faulty_function():x = 1 / 0  # 人为制造一个异常faulty_function()

工作原理:

  • 覆盖sys.excepthook后,任何未捕获的异常都会调用 custom_excepthook
  • custom_excepthook 中,使用 pdb.post_mortem 进入调试模式。
  • 可以调试程序,查看异常发生的原因和调用栈。

在这里插入图片描述

  • 如果你想全局捕获异常并自动进入调试模式,sys.excepthook 是更灵活的解决方案。
  • 如果只需简单调试单个脚本,用 python -m pdb 即可。
  • 异常点进入调试,推荐用 pdb.post_mortem

4.3 配合 ipdb 使用

ipdb 是 pdb 的增强版本,提供更友好的界面和支持代码自动补全:

pip install ipdb

使用方法与 pdb 相同:

import ipdb
ipdb.set_trace()

pdb 是一个强大的调试工具,通过熟练使用断点、单步执行、调用栈分析等功能,可以帮助快速定位和解决问题。

5. 高级用法 bt

在 pdb 调试器中,btbacktrace(回溯调用栈) 的缩写,用来显示当前程序的 调用栈,包括函数的调用顺序、行号、文件等信息

5.1. bt 命令作用

  • 用途: 显示程序执行到当前断点或出错位置时的调用栈

  • 场景:

    • 调试程序时,查看函数调用路径。
    • 分析异常发生的上下文。
  • 调用栈显示的信息:

    • 从主函数(或脚本入口)到当前代码位置的调用路径。
    • 每一层的调用函数名、文件名和行号。

5.2 示例代码

以下是一个示例程序,含多个函数嵌套调用,模拟一个异常场景:

def level1():level2()def level2():level3()def level3():x = 10y = 0result = x / y  # 人为制造一个异常def main():level1()if __name__ == "__main__":main()

当运行程序时,会因 ZeroDivisionError 报错。

使用 bt 查看调用栈
(1) 启动程序并进入调试模式 启动程序,并在异常发生时自动进入调试模式:

python -m pdb script.py

(2) 异常发生后,自动进入调试器 输出类似以下信息:

Traceback (most recent call last):File "script.py", line 14, in <module>main()File "script.py", line 12, in mainlevel1()File "script.py", line 2, in level1level2()File "script.py", line 5, in level2level3()File "script.py", line 9, in level3result = x / y
ZeroDivisionError: division by zero
> File "script.py", line 9, in level3

(3) 输入 bt 查看调用栈 在调试器提示符下输入 bt

(Pdb) bt

输出如下:

Traceback (most recent call last):File "script.py", line 14, in <module>main()File "script.py", line 12, in mainlevel1()File "script.py", line 2, in level1level2()File "script.py", line 5, in level2level3()File "script.py", line 9, in level3result = x / y

bt 输出解析

  • 调用顺序: 从底部到顶部依次列出函数调用的路径。
  • 每一层信息:
    • File “script.py”, line 5, in level2:文件名、行号、函数名。
    • result = x / y:错误发生的代码上下文。

5.3. 常见用法

  • 在异常发生时分析调用路径 如果程序抛出了异常,可以用 bt 命令查看是在哪一层函数中出现了问题,从而快速定位问题。

  • 分析深层嵌套调用 如果程序包含多层函数调用,bt 可以帮助明确每一层函数调用的顺序,以及当前所处的位置。

  • 结合上下文调试

  • 使用 up/down 命令上下移动调用栈,查看不同层级的变量值。

  • 使用 l 查看特定调用层的代码。

相关命令
在这里插入图片描述

5.4 示例:结合 bt 和 up/down

继续调试前面例子的代码:

(Pdb) bt
Traceback (most recent call last):File "script.py", line 14, in <module>main()File "script.py", line 12, in mainlevel1()File "script.py", line 2, in level1level2()File "script.py", line 5, in level2level3()File "script.py", line 9, in level3result = x / y

(1) 使用 up 进入上一层函数 level3:

(Pdb) up
> File "script.py", line 5, in level2
level3()

(2) 查看 level3 的上下文代码:

(Pdb) l
4     def level2():
5 ->     level3()

(3) 使用 down 返回当前函数栈:

(Pdb) down
> File "script.py", line 9, in level3
result = x / y
  • bt 是调试调用栈的核心命令,可以快速分析程序运行路径,尤其适用于深层嵌套和异常场景。
  • 结合 up/down 和 l 可以更深入了解上下文和变量状态。
  • 使用这些工具,可以高效地调试 Python 程序,快速定位和修复问题!
   -   在指定的文件设置断点: b /dataset/private_data/dataset.py:509      #(在dataset.py 的第509行设置断点)-   b  # 显示所有断点-   n  # next-   c  # 跳到下一个断点-   s  # 进入函数-   r  # 执行代码直到从当前函数返回-   cl # 删除所有断点-   p  # 查看变量值-   q  # quit-   disable 7  # disable breakpoint 7-   enable 7   # enable breakpoint 7
http://www.tj-hxxt.cn/news/52477.html

相关文章:

  • 5ucms和wordpress的区别seo快排公司哪家好
  • 江苏省建设厅官网网站首页普通话手抄报文字内容
  • 张店做网站国外比较开放的社交软件
  • angularjs网站开发实例全网营销推广怎么做
  • 网站制作百度百度网盘资源链接入口
  • 创业策划书sem优化推广
  • 织梦系统做的商城网站网络优化师是什么工作
  • 高权重域名做网站ip反查域名网站
  • 在线装修设计网站亚洲精华国产精华液的护肤功效
  • web如何做网站怎么做网络营销平台
  • 《动态网站建设》第03章在线测试推广一款app的营销方案
  • 为什么原网站建设公司不愿意透露域名管理权限给客户收录优美图片topit
  • 石家庄微信网站建设免费b站推广网址有哪些
  • 网站彩票做号系统优化软件排行榜
  • 上海市城乡建设部网站首页google站长工具
  • 国内ui网站百度地图优化
  • 陈欧做聚美优品网站昆山网站制作公司
  • 怎么创办app江门百度seo公司
  • 网站介绍页面二十条疫情优化措施
  • 返利网站建设电商网站入口
  • 网站制作公司相关工作seo教程搜索引擎优化
  • 网站建设研究课题最近几天发生的新闻大事
  • 湘阴县住房建设局网站2024年小学生简短小新闻
  • 温州专业做网站武汉软件测试培训机构排名
  • 九江网站建设哪家好推广优化
  • 文件网站建设购买链接平台
  • 易做文学网站的logo广州seo实战培训
  • 工业做网站关于网络推广的方法
  • 外包网站设计哪家好软文推广经典案例
  • 青岛网站建设工作室织梦模板北京网站优化方案