news 2026/4/18 1:44:39

跟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/18 5:41:58

PHP计算机毕设之基于php+vue的动物救助网站的设计与实现基于Vue的宠物领养系统的设计(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华
网站建设 2026/4/18 5:36:10

【ACM模式】栈的操作

求解代码 public static void main(String[] args)throws IOException{BufferedReader br new BufferedReader(new InputStreamReader(System.in));StreamTokenizer in new StreamTokenizer(br);PrintWriter out new PrintWriter(new OutputStreamWriter(System.out));Deque…

作者头像 李华
网站建设 2026/4/10 20:35:47

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

一、项目介绍 本文基于YOLOv12深度学习框架,设计并实现了一套针对小目标车辆的高精度检测系统。系统采用改进的YOLOv12算法,结合包含5236张训练图像和2245张验证图像的专用车辆数据集,优化了小目标检测性能。通过集成用户友好的UI界面及登录…

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

Nodejs毕设项目推荐-基于nodejs+vue基于java的c语音自学交流在线学习交流平台基于nodejs的计算机c语音自学交流平台【附源码+文档,调试定制服务】

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

作者头像 李华