Skip to content

[ENH] Provides command line tool for pydumpling#16

Merged
cocolato merged 7 commits intococolato:devfrom
un4gt:dev
Feb 27, 2024
Merged

[ENH] Provides command line tool for pydumpling#16
cocolato merged 7 commits intococolato:devfrom
un4gt:dev

Conversation

@un4gt
Copy link
Copy Markdown
Contributor

@un4gt un4gt commented Feb 19, 2024

Ref: #12
Provides command line tools

@cocolato cocolato changed the base branch from dev to main February 20, 2024 02:00
@cocolato cocolato changed the base branch from main to dev February 20, 2024 15:39
code format
@cocolato
Copy link
Copy Markdown
Owner

我更新了dev分支,现在在保存dump文件的同时会保留异常的type和value,所以可以直接使用Python内置的print方法来打印错误堆栈了,可以检查下这样是否符合我们的预期

@cocolato
Copy link
Copy Markdown
Owner

因为目前没有CI,所以可以修改完成后,运行sh test.sh看一下测试结果是否通过

@un4gt
Copy link
Copy Markdown
Contributor Author

un4gt commented Feb 20, 2024

打印错误堆栈目前已完成。
测试结果有问题,test_debug.py 失败
image

测试失败的原因是 test_dump.py 文件中,当执行dump_current_traceback("current_tb.dump")时,有警告:

RuntimeWarning: Unexpected error: list index out of range when dumping traceback
  warnings.warn(err_msg, RuntimeWarning)

出现错误,导致current_tb.dump 文件无法生成。

@cocolato
Copy link
Copy Markdown
Owner

你本地测试的python版本是什么呢,我在3.10/3.11测试没有复现

@cocolato cocolato changed the title command line tools [ENH] Provides command line tool for pydumpling Feb 21, 2024
@cocolato
Copy link
Copy Markdown
Owner

我们还可以修改一下README,增加一下命令行工具的用法说明和例子

@un4gt
Copy link
Copy Markdown
Contributor Author

un4gt commented Feb 21, 2024

你本地测试的python版本是什么呢,我在3.10/3.11测试没有复现

python 版本是 3.11.5(windows) 和 3.11.8 (linux), 两个平台都测试过,出现的问题是一样的。

我单独调用 dump_current_traceback 函数时发现也有同样的错误发生,使用的是下面的代码:

from pydumpling import dump_current_traceback
from inspect import currentframe


def inner():
    a = 1
    b = "2"
    dump_current_traceback("test.dump")
    c = str(a) + b


def outer():
    d = 4
    inner()

outer()

执行的结果为:

RuntimeWarning: Unexpected error: list index out of range when dumping traceback
  warnings.warn(err_msg, RuntimeWarning)

我们还可以修改一下README,增加一下命令行工具的用法说明和例子

README 我明天修改一下,同步上去

@cocolato
Copy link
Copy Markdown
Owner

cocolato commented Feb 22, 2024

image
我在你的分支上本地测试显示没有问题,确认一下分支状态?或者注释掉这段except,看一下实际的异常栈。

https://github.com/jennier0107/pydumpling/blob/18bda02f96c36a997af7b3b22e86c7226439cc74/pydumpling/pydumpling.py#L61-L63

@un4gt
Copy link
Copy Markdown
Contributor Author

un4gt commented Feb 22, 2024

image 我在你的分支上本地测试显示没有问题,确认一下分支状态?或者注释掉这段except,看一下实际的异常栈。

https://github.com/jennier0107/pydumpling/blob/18bda02f96c36a997af7b3b22e86c7226439cc74/pydumpling/pydumpling.py#L61-L63

分支都是一样的。以下是我重新测试的结果:

image

还有一点,我稍微修改了以下pydumpling/pydumpling/gen_tb_from_frame 部分的代码:
https://github.com/jennier0107/pydumpling/blob/be5cd36879643d28ba721955b91a813bbeb32952/pydumpling/pydumpling.py#L62C1-L82C21

修改完运行后结果是这样的
image

列表 queue 是空的, While 循环也没有进行

@cocolato
Copy link
Copy Markdown
Owner

我更新了我的dev分支,可以拉取一下最新的,试一下还会不会报错。然后我们用内置函数来打印错误栈信息吧,像这样:

from traceback import print_tb, print_exception


def print_traceback_and_except(dumpling_result):
    exc_tb = dumpling_result["traceback"]
    except_extra = dumpling_result.get("exc_extra")
    exc_type = except_extra["exc_type"] if except_extra else None
    exc_value = except_extra["exc_value"] if except_extra else None
    if exc_type and exc_value:
        print_exception(exc_type, exc_value, exc_tb)
    else:
        print_tb(exc_tb)

@cocolato
Copy link
Copy Markdown
Owner

现在测试应该没有问题,我先合并了,感谢贡献

@cocolato cocolato merged commit 8fb841a into cocolato:dev Feb 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants