Python pdb.set_trace()在终端中被忽略但在IPython中工作?

时间:2018-04-26 23:41:05

标签: python pdb

我正在尝试调试一个返回父数组中最长的升序子数组的程序。以下是名为 longest.py 的程序文件。

问题是当我在命令行中运行python longest.py时,没有显示来自pdb的提示。但是,我除了一些提示外,因为我在一些地方使用了pdb.set_trace()语句。

import pdb

def longest(array):
    pdb.set_trace()
    size = len(array)
    if size == 1:
        pdb.set_trace()
        return 1
    else:
        pdb.set_trace()
        print('Currently looking at subarray of length: ')
        print(size)
        if array[-1] > array[-2]: 
            pdb.set_trace()
            return longest(array[0:size-1]) + 1   # increasing the number by 1
        else:
            return longest(array[0:size-1])

def main():
    a = [7, 2, 3, 1, 5, 8, 9, 6]
    longest(a)

if __name__  == 'main':
    main()

另一方面,以下程序放入Jupyter Notebook单元并运行它,确实提供了所需的pdb提示。

a = [7, 2, 3, 1, 5, 8, 9, 6]

import pdb

# recursive version
def longest(array):
    size = len(array)
    pdb.set_trace()
    if size == 1:
        pdb.set_trace()
        return 1
    else:
        pdb.set_trace()
        print('Currently looking at subarray of length: ')
        print(size)
        if array[-1] > array[-2]: 
            return longest(array[0:size-1]) + 1   # increasing the number by 1
        else:
            return longest(array[0:size-1])

longest(a)

我的问题是: 1)为什么在第一个场景中似乎忽略了pdb.set_trace(),并且 2)为什么pdb.set_trace()在第二种情况下有效?

非常感谢你的帮助!

20分钟后更新

我将第二个程序粘贴到python文件 longest2.py 中并从命令行运行它。 pdb在那里工作得很好。

所以我猜第一个文件的问题不是pdb而是我的" main"功能?仍然没有想到它......

0 个答案:

没有答案