问题:
假设我有一个简单的脚本:
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)
然后我需要在两个调试会话上同时调试器 Step Over 并继续踩到,直到两个调试会话中的相同变量不同的价值。
那是:
在第一次调试会话中跳过并转到 第2行。
然后在第二次调试会话中跳过,它 转到第2行。
然后在第一次调试会话中跳过,然后转到第3行。
然后第二次调试会话跳过,然后转到第3行。
等等。
在下面的代码中,我将在第11行检测到同一变量的不同值。例如,变量i
可以在第一个调试器会话中获取值'c'
,而它具有值{{ 1}}在第二个调试器会话中。
如何让调试器自动执行上述过程并在第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行代码。)