news 2026/5/1 8:31:51

跟AI学一手之自定义调试函数或者类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
跟AI学一手之自定义调试函数或者类

最后一招是 macos 专用的,有帮助,所以记录一下

from gevent import monkey monkey.patch_all() import signal import sys import os # 检查是否有信号处理 def debug_signal(signum, frame): print(f"收到信号 {signum},堆栈:", file=sys.stderr) import traceback traceback.print_stack(frame) sys.exit(1) # 改为退出前打印 # 替换所有终止信号的处理 for sig in [signal.SIGTERM, signal.SIGINT, signal.SIGQUIT]: signal.signal(sig, debug_signal) from __init_main__ import * #----------------------------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------------------------------------- # 依赖接口 #----------------------------------------------------------------------------------------------------------------------- from libp import * from ui import * from w9099_01_data import * from w9099_01_i1 import * from w9099_01_gb28181.w9099_01_gb28181_main import gb28181_main from w9099_01_rtsp.w9099_01_rtsp_server_main import w9099_01_rtsp_main from threading import Thread import traceback from w9099_01_api.app import bootstrap_w9099_01_api_server #----------------------------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------------------------------------- # 主进程入口 #----------------------------------------------------------------------------------------------------------------------- import atexit def on_exit(): # 打印退出时的堆栈 print("\n" + "="*50, file=sys.stderr) print("进程即将退出,堆栈:", file=sys.stderr) traceback.print_stack(file=sys.stderr) print("="*50, file=sys.stderr) sys.stderr.flush() # 注册退出钩子 atexit.register(on_exit) # 同时捕获 SystemExit original_exit = sys.exit def custom_exit(code=0): print(f"\n!!! sys.exit({code}) 被调用 !!!", file=sys.stderr) traceback.print_stack(file=sys.stderr) sys.stderr.flush() original_exit(code) sys.exit = custom_exit import threading import time def check_threads(): """检查是否所有非守护线程都已结束""" print("活跃线程:", threading.enumerate()) for t in threading.enumerate(): print(f" {t.name}: daemon={t.daemon}, alive={t.is_alive()}") # 在程序退出前调用 import atexit atexit.register(check_threads) import threading import sys import traceback # Python 3.8+ 官方推荐方式,无需替换 Thread 类 def handle_thread_exception(args): print(f"线程 {args.thread.name} 异常: {args.exc_type.__name__}: {args.exc_value}", file=sys.stderr) traceback.print_exception(args.exc_type, args.exc_value, args.exc_traceback) threading.excepthook = handle_thread_exception # 捕获线程中的未处理异常(Python 3.8+) if hasattr(threading, 'excepthook'): def handle_thread_exception(args): print(f"线程 {args.thread.name} 异常:", file=sys.stderr) traceback.print_exception(args.exc_type, args.exc_value, args.exc_traceback) threading.excepthook = handle_thread_exception import faulthandler import sys # 启用崩溃转储 faulthandler.enable(file=sys.stderr, all_threads=True) # 可选:设置超时,如果卡住就dump堆栈 # faulthandler.dump_traceback_later(30, repeat=True) # 30秒后打印堆栈 import faulthandler import sys import os # 必须写入文件,macOS 终端可能丢失输出 crash_log = open('/tmp/python_crash.log', 'w') faulthandler.enable(file=crash_log, all_threads=True) # 同时设置超时 dump faulthandler.dump_traceback_later(5, repeat=True, file=crash_log) print("程序启动", file=crash_log) crash_log.flush()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 10:28:09

PHP毕设项目推荐-基于PHP的动物救助领养网站系统爱心捐赠基于php+vue的动物救助网站的设计与实现【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/25 14:10:13

PHP计算机毕设之基于php+vue的篮球馆智慧管理系统篮球球衣周边销售管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/1 11:59:09

如何在 iPhone 上共享联系人? 【6个有效方法】

在 iPhone 上共享联系人是与他人交换信息的一种快速、简单的方法。无论您需要向同事发送电话号码、与朋友共享电子邮件地址,还是向新认识的人提供您的联系信息,您的 iPhone 都可以通过多种方式帮助您无缝共享联系信息。我们将在本文中向您展示如何使用不…

作者头像 李华
网站建设 2026/5/1 7:58:52

基于深度学习YOLOv11的铁路轨道缺陷识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 铁路轨道缺陷检测对保障列车运行安全至关重要。传统人工检测方法效率低且易受主观因素影响,而基于计算机视觉的自动化检测技术可显著提升检测精度与效率。本研究提出一种基于YOLOv11深度学习模型的铁路轨道缺陷智能检测系统,针对四种常见缺…

作者头像 李华
网站建设 2026/5/1 7:28:25

深度测评10个降AI率工具 千笔·降AIGC助手有效降低AIGC痕迹

AI降重工具的崛起:让论文更“自然”的秘密武器 在当前学术写作日益依赖AI生成内容的背景下,如何有效降低AIGC率、去除AI痕迹、同时保持论文的语义通顺与逻辑严谨,成为许多本科生面临的核心难题。随着高校对AI检测技术的不断升级,传…

作者头像 李华