Błąd podczas próby debugowania w QtProject

14

Zainstalowałem najnowszą wersję QtProject, więc teraz mogę debugować C++kod.

Podczas próby debugowania po raz pierwszy otrzymałem ten błąd:

ptrace: Operation not permitted.

Could not attach to the process. Make sure no other debugger traces this process.
Check the settings of
/proc/sys/kernel/yama/ptrace_scope
For more details, see /etc/sysctl.d/10-ptrace.conf
użytkownik124009
źródło

Odpowiedzi:

14

W wersjach Ubuntu po 10.10 napotkasz to w bardziej powiązanych aplikacjach, takich jak QtCreator. Jest to funkcja bezpieczeństwa Ubuntu, która uniemożliwia debugerowi dołączenie do procesów, które nie są jego własnością.

Jest to zgłaszane jako błąd # 3509 przeciwko QtCreator . Aby obejść ten problem, wykonaj następujące czynności:

  • rozwiązanie tymczasowe (nie przetrwa ponownego uruchomienia):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • W pliku /etc/sysctl.d/10-ptrace.conf(powinien już istnieć), zmień wartość kernel.yama.ptrace_scopena 0, a następnie przeładować konfigurację: sudo sysctl -p.

Bezpośrednio publikuję tymczasowe rozwiązanie, ponieważ prawdopodobnie nie chcesz, aby ta funkcja była wyłączona na zwykłym komputerze ze względów bezpieczeństwa.

gertvdijk
źródło
4

Miałem ten sam problem podczas uruchamiania projektu w terminalu. Po prostu odznacz (lub zaznacz - uruchom - odznacz, jeśli z jakiegoś powodu nie jest zaznaczony) pole „Uruchom w terminalu” w „Projektach” (na lewym pasku) - zakładka „Uruchom” - sekcja „Uruchom”.

uzasadnione założenie
źródło
Dzięki temu zadziałało dla mnie debugowanie teraz rozpoczyna się w danych wyjściowych aplikacji QTCreators.
squareborg
Głosuj na to, ponieważ jest to najłatwiejsze rozwiązanie, jeśli nie musisz widzieć danych wyjściowych terminala z aplikacji.
Rob Davies,
0

Możesz zmienić możliwości gdb za pomocą

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

Możliwości man mówi cap_sys_ptrace daje prawo

Trace  arbitrary  processes  using ptrace(2); apply get_robust_list(2)
to arbitrary processes; inspect processes using kcmp(2).

Zobacz także man cap_from_text.

Jest to rozwiązanie, które nie jest usuwane podczas ponownego uruchamiania, ale nie jest również całkowicie bezpieczne. Jestem otwarty na sugestie, jak to zrobić na stałe i bezpiecznie.

Matti X Virtanen
źródło
-4

Wystarczy otworzyć QtCreator za pomocą terminala z uprawnieniami administratora; zadziałało dla mnie.

sudo qtcreator
Prashant Singh Rathore
źródło
Ujawnia dużą lukę bezpieczeństwa.
enedil