From fd769140e1f4315c90eddca3d2ef65799fe52bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E7=91=97=E6=9D=B0?= <3695888@qq.com> Date: Thu, 16 Sep 2021 19:18:06 +0800 Subject: [PATCH] V0.5.2 commit not done --- Difficult_Rocket.py | 20 ++++++++++++------ Difficult_Rocket/client.py | 1 - Difficult_Rocket/crash.py | 42 ++++++++++++++++++++++++++++---------- docs/update_logs.md | 4 +++- requirement.txt | 3 ++- 5 files changed, 50 insertions(+), 20 deletions(-) diff --git a/Difficult_Rocket.py b/Difficult_Rocket.py index 65389e3e..aa45e4f8 100644 --- a/Difficult_Rocket.py +++ b/Difficult_Rocket.py @@ -30,21 +30,29 @@ sys.path.append('Difficult_Rocket/libs') print(hi) + + DEBUGGING = False + from Difficult_Rocket.api.Exp import * try: from Difficult_Rocket import crash from Difficult_Rocket import main game = main.Game() game.start() + + if DEBUGGING: + raise TestError('debugging') + except TestError: + print('the game is debugging. this crash is raise by TestError') + error = traceback.format_exc() + print(error) + crash.create_crash_report(error) except: - print('the game has error , now outputting error message') + print('the game has unknown error , now outputting error message') error = traceback.format_exc() print(error) - from Difficult_Rocket.api import thread - - crash_thread = thread.Threads(target=crash.create_crash_report, args=(error,), name='Crash report thread') - crash_thread.start() - crash_thread.join() + crash.create_crash_report(error) else: crash.record_thread = False print(crash.all_thread) + sys.exit(1) diff --git a/Difficult_Rocket/client.py b/Difficult_Rocket/client.py index 8001efae..add55a7a 100644 --- a/Difficult_Rocket/client.py +++ b/Difficult_Rocket/client.py @@ -206,5 +206,4 @@ def on_close(self) -> None: config_file['window']['width'] = str(self.width) config_file['window']['height'] = str(self.height) config_file.write(open('configs/main.config', 'w', encoding='utf-8')) - create_crash_report() super(ClientWindow, self).on_close() diff --git a/Difficult_Rocket/crash.py b/Difficult_Rocket/crash.py index 44427a1e..ebb53b89 100644 --- a/Difficult_Rocket/crash.py +++ b/Difficult_Rocket/crash.py @@ -13,11 +13,15 @@ import os -import threading import time +import platform import traceback +import threading from typing import Optional +# import psutil +# for more system info + # where the crash report from # this can't be crash , or the game will really crash! @@ -30,9 +34,13 @@ Thread_message = """## Thread info """ +Python_message = """## Python info +""" + System_message = """## System info """ + all_thread = [threading.main_thread()] record_thread = True @@ -40,32 +48,30 @@ def crash_info_handler(info: str = None) -> str: if not info: info = traceback.format_exc() - format_info = '- {}'.format(info.replace('\n', '\n- ')) - if (format_info.rfind('- ') + 2) == len(format_info): - format_info = format_info[:-2] + format_info = f"
\n{info}\n" return format_info -def markdown_line_handler(string: Optional[str or bool or int or float], code: bool = False, level: int = 1) -> str: +def markdown_line_handler(string: Optional[str or bool or int or float], code: bool = False, level: int = 1, end: str = '\n') -> str: lvl = '- ' * level f_string = string if code: f_string = '`{}`'.format(f_string) - return '{}{}\n'.format(lvl, f_string) + return '{}{}{}'.format(lvl, f_string, end) def create_crash_report(info: str = None) -> None: - if info: - crash_info = crash_info_handler(info) - else: - crash_info = crash_info_handler(traceback.format_exc()) + crash_info = crash_info_handler(info) if 'crash_report' not in os.listdir('./'): os.mkdir('./crash_report') date_time = time.strftime('%Y-%m-%d %H-%M-%S', time.gmtime(time.time())) filename = 'crash-{}.md'.format(date_time) with open('./crash_report/{}'.format(filename), 'w+') as crash_file: - crash_file.write(Head_message) # 开头信息 + # 开头信息 + crash_file.write(Head_message) + # 崩溃信息 crash_file.write(crash_info) + # 运行线程信息 crash_file.write(Thread_message) for thread in all_thread: thread: threading.Thread @@ -74,7 +80,21 @@ def create_crash_report(info: str = None) -> None: crash_file.write(markdown_line_handler(f'Ident: {thread.ident}', level=2)) crash_file.write(markdown_line_handler(f'Daemon: {thread.isDaemon()}', level=2)) crash_file.write(markdown_line_handler(f'Running: {thread.is_alive()}', level=2)) + # Python 信息 + crash_file.write(Python_message) + crash_file.write(markdown_line_handler(f'Version: {platform.python_version()}', code=True, level=1)) + # crash_file.write(markdown_line_handler(f'Version tuple: {platform.python_version_tuple()}', code=True, level=1)) + # crash_file.write(markdown_line_handler(f'Build: {platform.python_build()}', code=True, level=1)) + crash_file.write(markdown_line_handler(f'Implementation: {platform.python_implementation()}', code=True, level=1)) + crash_file.write(markdown_line_handler(f'Compiler: {platform.python_compiler()}', code=True, level=1)) + # 电脑系统信息 crash_file.write(System_message) + crash_file.write(markdown_line_handler(f'System: {platform.platform()}', code=True, level=1)) + crash_file.write(markdown_line_handler(f'Computer name: {platform.node()}', code=True, level=1)) + crash_file.write(markdown_line_handler(f'machine: {platform.machine()}', code=True, level=1)) + crash_file.write(markdown_line_handler(f'processor: {platform.processor()}', code=True, level=1)) + crash_file.write(markdown_line_handler(f'release: {platform.release()}', code=True, level=1)) + crash_file.write(markdown_line_handler(f'version: {platform.version()}', code=True, level=1)) if __name__ == '__main__': diff --git a/docs/update_logs.md b/docs/update_logs.md index 07114f68..91b88b20 100644 --- a/docs/update_logs.md +++ b/docs/update_logs.md @@ -16,7 +16,9 @@ - now bin folder use the name `Difficult_Rocket` - now test files no longer have `_test_` prefix -- now will always use local `pyglet` +- now will always use local `pyglet` # may change +- now fitting `pypy3.10` +- now `crash-report` have more information ### Add diff --git a/requirement.txt b/requirement.txt index 78216942..2a420416 100644 --- a/requirement.txt +++ b/requirement.txt @@ -1,5 +1,6 @@ -i https://pypi.tuna.tsinghua.edu.cn/simple semver +psutil pyglet pillow -json5 \ No newline at end of file +json5