نقارن مخزن نص وملفًا مؤقتًا مفتوحًا. [1] [2] [3]
الخلاصة السريعة
dump_traceback يحتاج واصف ملف، لا مجرد write. [1] [2] [3]
- StringIO يرفع UnsupportedOperation في مثالنا. [1] [2] [3]
- الخرج: fileno ثم True في CPython3.12.14. [1] [2] [3]
- True لوجود <module> في الملف؛ نعيد موضعه قبل القراءة. [1] [2] [3]
- all_threads=False للخيط الحالي؛ التفريغ لا يتطلب إحداث عطل. [1] [2] [3]
- نبقي الملف مفتوحًا أثناء التفريغ؛ يغلقه with. [1] [2] [3]
المثال
import faulthandler as h,io,tempfile
with io.StringIO() as s:
try: h.dump_traceback(s,all_threads=False)
except io.UnsupportedOperation: print("fileno")
with tempfile.TemporaryFile(mode="w+b") as f:
h.dump_traceback(f,all_threads=False)
f.seek(0)
print(b"<module>" in f.read())الواصف والتتبع
يستدعي التنفيذ fileno()، بينما لا يملك StringIO واصفًا. نفحص وجود اسم إطار <module> في بايتات الملف؛ لا نطبع قيمة dump_traceback ولا نفسر النتيجة بأنها استثناء حالي. [1] [2] [3]

الحدود
لم نشغّل معالج أعطال أو مؤقتًا أو نسبب انهيارًا. أرقام الأسطر ومعرّف الخيط تتغير؛ لا يثبت التتبع وحده سبب خلل، ولا نختبر تتبع C. [1] [2] [3]
المراجع
- Python: faulthandler
- CPython3.12.14: faulthandler.c
- Python: IOBase.fileno
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
