news 2026/4/23 14:32:20

跟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/4/23 13:02:27

【课程设计/毕业设计】基于Vue的宠物领养系统的设计基于php+vue的动物救助网站的设计与实现【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/4/23 12:52:02

Nodejs毕设选题推荐:基于VUE框架的实时新闻推送新闻信息管理、新闻投稿管理平台【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/4/23 12:48:04

ollama 官网下载安装包慢怎么解决

ollama 官网下载安装包慢怎么解决 下载 Ollama 官网安装包慢是很多国内用户(尤其是在河南等地区)常见的问题,这通常是因为网络连接 GitHub 或其服务器时存在延迟或限速。 别担心,这个问题很好解决。我为你整理了几种最有效的提速…

作者头像 李华
网站建设 2026/4/23 13:01:26

基于深度学习YOLOv12的超市商品识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 随着零售行业的快速发展,智能商品识别技术在超市管理中的应用日益广泛。本文基于YOLOv12深度学习算法,设计并实现了一套高效的超市商品识别检测系统。该系统能够准确识别295种常见商品,涵盖饮料、零食、调味品、生鲜等多个类别…

作者头像 李华
网站建设 2026/4/21 21:25:01

Nodejs计算机毕设之基于nodejs+vue知识交流平台的实现与设计基于nodejs的计算机c语音自学交流平台(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华
网站建设 2026/4/16 13:34:46

计算机Nodejs毕设实战-基于nodejs的计算机c语音自学交流平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华