2017-10-16 17 views
1

pdb의 display 명령은 전체 변수가 할당 된 경우에만 표현식을 나타냅니다.python3 pdb 디스플레이 목록

pass 
foo = [1, 2, 3] 
foo[0] = 8 
foo.append(7) 
pass 

python3 -m pdb bar.py와 상기 코드를 실행하고 display foo 들어갈 때 I 얻을 출력은 :

> bar.py(2)<module>() 
-> foo = [1, 2, 3] 
(Pdb) display foo 
display foo: ** raised NameError: name 'foo' is not defined ** 
(Pdb) n 
> bar.py(3)<module>() 
-> foo[0] = 8 
display foo: [1, 2, 3] [old: ** raised NameError: name 'foo' is not defined **] 
(Pdb) 
> bar.py(4)<module>() 
-> foo.append(7) 
(Pdb) 
> bar.py(5)<module>() 
-> pass 
(Pdb) foo 
[8, 2, 3, 7] 
(Pdb) 

나가서 설명하자면 NameError 및 디스플레이의 제 1 출력이 예상된다. 그러나 첫 번째 항목이 변경되거나 추가되었을 때 디스플레이가 변경된 foo을 표시하지 않는 것 같습니다.

변경 사항을 pdb에 표시하는 방법이 있습니까? display str(foo)이 작업을 수행하지만 더 나은 솔루션이 있는지 궁금합니다.

답변

0

예, 변경 사항을 추적하는 방법은 'p' 명령입니다. 이 예제를 참조하십시오

> /home/maksim/Projects/Python/basic/test.py(2)<module>() 
-> foo = [1, 2, 3] 
(Pdb) s;;l;;p foo 
> /home/maksim/Projects/Python/basic/test.py(3)<module>() 
-> foo[0] = 8 
    1  pass 
    2  foo = [1, 2, 3] 
    3 -> foo[0] = 8 
    4  foo.append(7) 
    5  pass 
    6  
    7  
    8  
[EOF] 
[1, 2, 3] 
(Pdb) s;;l;;p foo 
> /home/maksim/Projects/Python/basic/test.py(4)<module>() 
-> foo.append(7) 
    1  pass 
    2  foo = [1, 2, 3] 
    3  foo[0] = 8 
    4 -> foo.append(7) 
    5  pass 
    6  
    7  
    8  
[EOF] 
[8, 2, 3] 
(Pdb) s;;l;;p foo 
> /home/maksim/Projects/Python/basic/test.py(5)<module>() 
-> pass 
    1  pass 
    2  foo = [1, 2, 3] 
    3  foo[0] = 8 
    4  foo.append(7) 
    5 -> pass 
    6  
    7  
    8  
[EOF] 
[8, 2, 3, 7] 
(Pdb) s;;l;;p foo 
--Return-- 
> /home/maksim/Projects/Python/basic/test.py(5)<module>()->None 
-> pass 
    1  pass 
    2  foo = [1, 2, 3] 
    3  foo[0] = 8 
    4  foo.append(7) 
    5 -> pass 
    6  
    7  
    8  
[EOF] 
[8, 2, 3, 7] 
(Pdb) 
+0

귀하의 의견을 보내 주셔서 감사합니다.하지만 제 질문에 완전히 답변하지는 않습니다. foo의 내용이 인쇄되지 않으면 변경하지 않은 foo 내용이 인쇄됩니다. – jbl

+0

오, 알겠습니다 ... 네, 맞습니다. 그렇지 않습니다. 나는 더 나은 것이 나타나기를 원한다면 의견을 게시 할 것입니다. 덧글 대신 답장을해서 유감스럽게 생각합니다. 현재 내 평판은 18 점 밖에 없으므로 사용자의 질문은 말할 수 없지만 내 의견은 말할 수 없습니다. 답장을 보내 주셔서 감사합니다. –