source

PDB 명령과 이름이 충돌하는 변수를 조작하려면 어떻게 해야 합니까?

factcode 2023. 8. 7. 23:09
반응형

PDB 명령과 이름이 충돌하는 변수를 조작하려면 어떻게 해야 합니까?

좋든 나쁘든 제 코드에는 제가 자주 상호 작용하는 NumPy뿐만 아니라 단일 문자 변수(물리학적인 것이므로 의미가 있습니다)가 많이 있습니다.

파이썬 디버거를 사용할 때, 때때로 나는 다음과 같은 가치를 보고 싶을 것입니다.n하지만, 제가 칠 때는.n<enter>그것이 PDB 명령입니다.(n)ext더 높은 우선순위를 갖는 것.print n어떻게 설정할 수 있을까요?

느낌표 사용!명령문을 실행하기 전에:

python -m pdb test.py
> /home/user/test.py(1)<module>()
-> print('foo')
(Pdb) !n = 77
(Pdb) !n
77
(Pdb) n
foo
> /home/user/test.py(2)<module>()
-> print('bar')
(Pdb)

문서에는 다음과 같은 내용이 있습니다.

! statement

현재 스택 프레임의 컨텍스트에서 (한줄) 을 실행합니다.문의 첫 번째 단어가 디버거 명령어와 유사하지 않으면 느낌표를 생략할 수 있습니다. [...]

세미콜론을 사용할 수 있으므로 그 앞에 다른 것을 놓으십시오.

ipdb> print n
2
ipdb> n
> 145 <some code here>
  146
  147

ipdb> 1; n=4
1
ipdb> print n
4

브래킷 사용(variable_name).

예를 들어, 이름이 지정된 변수가 하나 있는 경우q그리고 당신은 그것의 가치를 확인하기를 원합니다.직접 입력하는 경우q프롬프트에서, 그리고 나서.ipdb디버깅 프로세스가 종료되고 중단됩니다.

>>> q

대신, 당신은 입력해야 합니다.(q)이 변수를 확인하려면:

>>> (q)

그런 다음 값이 인쇄됩니다.

이것은 당신의 질문에 대한 직접적인 대답은 아니지만 도움이 될 수 있습니다. PuDB는 PDB를 위한 콘솔 기반 시각 인터페이스로, 설계상 명령과 변수 조작을 구분합니다.

Eric IDE, Wing IDE 및 Spyder의 일부만 언급하자면, 값 표시와 명령을 구분하기 때문에 시도해 볼 가치가 있는 비주얼 디버거가 있습니다.

언급URL : https://stackoverflow.com/questions/21123473/how-do-i-manipulate-a-variable-whose-name-conflicts-with-pdb-commands

반응형