/dev/port를 사용하는 애플리케이션을 디버그하기 위해 gdb를 사용하는 방법

/dev/port를 사용하는 애플리케이션을 디버그하기 위해 gdb를 사용하는 방법

오래된 ISA 카드에서 작동하는 간단한 C++ 코드가 있습니다.

fd = open("/dev/port", O_RDWR);
if (fd == -1)
{
    Error() << "Error fd = -1" << msg_show;
    return;
}

나도 그랬다:

sudo setcap cap_sys_rawio=ep myapp

를 사용하여 애플리케이션을 시작하면 ./myapp모든 것이 괜찮지만 다음을 사용하여 디버깅 세션을 시작하면:

 gdb myapp

그러면 나는 다음을 얻습니다: error "fd = -1"

나는 또한 그것을 설정 cap_sys_rawio하려고 시도했습니다.gdb

sudo setcap cap_sys_rawio=ep /usr/bin/gdb

긍정적인 결과가 없습니다. 내 애플리케이션을 어떻게 디버깅하나요?

답변1

좋아요 내 경우 가장 올바른 접근 방식은 몇 개의 포트를 사용하고 chmod를 사용하여 변경할 수 있는 권한이 있는 /dev/myport 장치를 제공하는 간단한 드라이버를 작성하는 것이었습니다.

샘플 드라이버를 사용하여 저장소를 만들었습니다.

https://github.com/qmor/AIC12202

관련 정보