![xvfb-run을 사용하여 호출된 바이너리를 디버깅(gdb)하는 방법은 무엇입니까?](https://linux55.com/image/221271/xvfb-run%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%98%B8%EC%B6%9C%EB%90%9C%20%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC%EB%A5%BC%20%EB%94%94%EB%B2%84%EA%B9%85(gdb)%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
일반적으로 다음과 같이 실행하는 바이너리가 있습니다.
$ xvfb-run ./bin --param1 foo
그러나 이제 GDB를 사용하여 디버깅해야 하는데 다음을 수행할 수 없습니다.
$ gdb --args xvfb-run ./bin --param1 foo
왜냐하면"/usr/bin/xvfb-run": not in executable format: file format not recognized.
이를 수행할 수 있는 방법이 있습니까? 예를 들어wxya?
티아!
답변1
xvfb-run
쉘 스크립트입니다! 따라서 모든 xvfb-run을 실행하려면 gdb
필요합니다.
gdb --args sh $(which xvfb-run) ./bin --param1 foo
하지만 이것은 당신이 원하는 것이 아닐 수도 있습니다! 제가 보기엔 당신은 X 서버 자체를 디버깅하는 데 관심이 없는 것 같습니다 Xvfb
. 디버깅에 관심이 있는 것 같습니다 ./bin
. 차라리
xvfb-run gdbserver localhost:9999 ./bin --param1 foo
gdbserver를 시작하고 ./bin
프로그램을 로드한 다음 gdb를 사용하여 연결할 수 있습니다.
$ gdb ./bin
(gdb) target remote localhost:9999
(gdb) run