원격 호스트에 대한 SSH 연결을 정의하고 원격으로 실행되는 스크립트를 로컬로 연결 및 디버깅할 수 있는 IDE가 있는지 궁금합니다(Eclipse에서 원격 Java 애플리케이션을 디버깅하는 방법과 비슷합니다). 변수를 한 줄씩 검사할 수 있기를 원합니다.
답변1
추적 출력을 개선하는 쉬운 방법은 다음 코드 조각을 사용하는 것입니다.
PS4='[${BASH_SOURCE[0]:-inherited}:${LINENO}:${FUNCNAME[0]:-main}] '
set -o xtrace
그러면 다음이 표시됩니다.
- 소스 파일
- 소스 줄 번호
- 기능 이름
당신은 또한 볼 수 있습니다c42-공통 기능 위키 페이지
출력 예:
$ c42_loglevel_trace
$ pidkill --help
++ '[' '+ ' == '+ ' ']'
++ PS4='[${BASH_SOURCE[0]:-inherited}:${LINENO}:${FUNCNAME[0]:-main}] '
...
[/usr/local/bin/pidkill:224:main] '[' 1 -eq 0 ']'
[/usr/local/bin/pidkill:230:main] signal=KILL
[/usr/local/bin/pidkill:231:main] '[' 1 -gt 0 ']'
[/usr/local/bin/pidkill:233:main] case $1 in
[/usr/local/bin/pidkill:268:main] shift 1
[/usr/local/bin/pidkill:269:main] help
[/usr/local/bin/pidkill:57:help] cat
pidkill <-h|--help> this help
[/usr/local/bin/pidkill:70:help] copyLeft
[/usr/local/bin/pidkill:13:copyLeft] echo ''
...
또 다른 옵션은배쉬 데이터베이스:
이것은 O'Reilly and Associates(ISBN 1-56592-054-6)에서 출판되고 Michael Loukides와 Cigy Cyriac Change가 편집한 Bill Rosenblatt의 "Korn Shell 학습"의 Korn Shell Debugger를 완전히 재작성한 것입니다. 그러나 이제 이 코드는 POSIX 표준의 일부도 아니고 많은 POSIX 유사 셸에도 없는 여러 디버깅 지원 기능에 의존합니다. bashdb는 BASH로 작성된 스크립트를 디버깅하는 데에만 사용할 수 있지만 BASH 프로그래밍에 대해 자세히 알아보기 위한 프런트 엔드로도 사용할 수 있습니다. 추가 지원으로 디버거는 함수와 변수가 이미 초기화된 기존 스크립트의 컨텍스트에서 사용될 수 있습니다. 디버거 내에서 기존 코드 조각을 변경하여 실험할 수 있습니다.
답변2
Bash 스크립트 디버깅을 위한 IDE? 그래픽 GUI가 호스트에 ssh를 연결하고 스크립트의 cli 출력을 제공하는 방법을 이해하지 못합니다. 또한 스크립트를 실행할 수 있는 bash 디버거도 모릅니다. 그러나 어떤 종류의 쉘 스크립트를 말하는지는 지정하지 않았습니다.
bash인 경우 이 -x
플래그를 사용하여 추적을 활성화할 수 있습니다. 이것은 거의 디버깅입니다. 하지만 침입/탈퇴/오버는 할 수 없습니다. 그래도 매우 유용하다고 생각합니다.
이렇게 하면 shebang에서 직접 활성화할 수 있습니다.
#!/usr/bin/bash -x
또는 추적을 활성화/비활성화하려면 set을 사용하세요.
set -x # enable debugging
set +x # disable tracing
스크립트를 일시중지할 수도 있습니다.read
ENV 변수 /proc/<PID>/environ
는 \0으로 구분되어 있으며 sed를 사용하여 null 문자를 CR로 바꿀 수 있습니다.
cat /proc/10815/environ | sed 's/\0/\n/g'
즐기다
GUI는 잊어버리고 삶을 더 쉽게 만들어 보세요. GUI는 사용자와 소비자를 위한 것입니다.