如何记录两个断点之间的调用堆栈?

Posted

技术标签:

【中文标题】如何记录两个断点之间的调用堆栈?【英文标题】:How to record the call stack between two breakpoint? 【发布时间】:2021-06-24 13:06:12 【问题描述】:

我正在尝试使用 PyCharm 调试一个大型项目。我的问题是现在我有以下代码:

objList = [obj1,obj2]
for obj in objList:
    fun(obj)

预期的结果是fun(obj1)fun(obj2) 都不会导致错误,但事实是fun(obj2) 会引发异常而fun(obj1) 不会。所以我想找到一种方法来记录两个函数调用的调用堆栈并比较它们来调试。注意fun(obj1)不会引发错误,因此不会命中异常断点,并且项目很大,因此逐层进入函数是不可行的。

【问题讨论】:

【参考方案1】:

这需要两个步骤,一个用于设置断点,另一个用于配置日志文件。

1.1。右键单击断点并设置回溯函数,在此示例中为 traceback.print_stack()。 (您必须在模块顶部import traceback。)

1.2。您可以通过点击“更多”来展开对话。

    Run>Edit Configurations>Logs中设置日志文件

【讨论】:

以上是关于如何记录两个断点之间的调用堆栈?的主要内容,如果未能解决你的问题,请参考以下文章

由于两个视图之间的高度相同,我如何决定哪个视图缩小/膨胀?

如何查看xcode调用堆栈

在两个 UIViewController 堆栈之间转换

在两个堆栈之间传递参数 - React Native

Chrome 是不是有内置的调用堆栈?

记录Yii2代码调试中出现的两个问题(截图展示)