在同一个脚本上同时调试会话,同时跳过

时间:2015-09-12 18:28:28

标签: python debugging pycharm python-3.4

问题:
假设我有一个简单的脚本:

print('hello')
x = 7 + 2
x *= 4

s = set('abcdefgh')

my_str = ''
for i in s:
    my_str += i

# Prints different str each time.
print(my_str)

我需要同时运行两个调试会话: enter image description here

然后我需要在两个调试会话上同时调试器 Step Over 并继续踩到,直到两个调试会话中的相同变量不同的价值

那是:

  • 第一次调试会话中跳过并转到 第2行

  • 然后在第二次调试会话中跳过,它 转到第2行

  • 然后在第一次调试会话中跳过,然后转到第3行

  • 然后第二次调试会话跳过,然后转到第3行

  • 等等。

在下面的代码中,我将在第11行检测到同一变量的不同值。例如,变量i可以在第一个调试器会话中获取值'c',而它具有值{{ 1}}在第二个调试器会话中。

enter image description here

如何让调试器自动执行上述过程并在第11行停止?

为什么我需要它:

如果我在上面的代码中使用了'a',它将始终返回相同的结果。

sorted(s)

在我的实际案例中,我忘记使用for i in sorted(s): # This would always be the same now. my_str += i 导致代码应该具有确定性,但反而表现不确定。 (通过确定性,我的意思是代码总是为给定的输入提供相同的输出)

在上面的示例中(假设您有python 3.3 or higher),不同的调试会话将导致不同的sorted()和(通常)不同的有序集,dicts等。因此,PYTHONHASHSEED会(通常)每次运行时获得不同的值。

我需要能够检测变量是否获得不同的值。

(注意:我的实际代码是+ 10k行代码。)

0 个答案:

没有答案