Ứng dụng gỡ lỗi Qt trên Ubuntu với quyền root bằng cách sử dụng trình tạo qt


10

Có thể chạy ứng dụng của tôi với quyền riêng tư bằng cách sử dụng sudo, như thế này:

sudo ./MyApp

Có thể gỡ lỗi ứng dụng Qt của tôi bằng cách sử dụng quyền riêng tư bằng cách sử dụng QtCreator không? Làm thế nào tôi có thể làm điều này trên một hệ thống Ubuntu?

Câu trả lời:


14
  1. Đi đến Tools-> Options-> Environment
  2. Trong TabGeneral bên dưới **System** GroupTerminalTùy chọn .
  3. Giá trị mặc định được đặt thành /usr/bin/xterm -e. Thay thế nó bằng /usr/bin/xterm -e sudohoặc /usr/bin/gnome-terminal -x sudo.
  4. Nhấn ApplyOK nút .
  5. Trong mục Chọn chế độ, nhấp vào Projects, chọn RunTùy chọn. Trong RunHộp nhóm chọn Run in Terminal.

Ghi nhớ: sudotùy chọn phải ở đó

Chỉnh sửa /etc/sudoers bằngsudo visudo

Lần tới khi bạn chạy chương trình, nó sẽ được gọi trong một quyền mới xtermhoặc gnome-terminal với Quyền siêu người dùng và sẽ yêu cầu mật khẩu gốc .


2
Đây là giải pháp phù hợp
Ray

2
những gì chúng ta nên thêm vào / etc / sudoers?
Necktwi

4
Không hoạt động với tôi, sau khi nhập mật khẩu sudo Báo cáo đầu ra ứng dụng "Việc gỡ lỗi đã kết thúc", không ai trong số các breakpont thực sự phá vỡ

Đối với bản ghi, "Chế độ chọn chế độ" là bảng điều khiển nút bên trái nhất với Chào mừng ở trên cùng
Eric

1

Tôi đã giải quyết nó bằng cách bắt đầu Qt Creator là root.

sudo /usr/bin/qtcreator

Bây giờ, nó sẽ nhận được quyền root cho ứng dụng khi tôi biên dịch và gỡ lỗi. Bây giờ có thể gỡ lỗi ứng dụng của tôi với quyền root.


3
Đó là một điều rất rất rất ngu ngốc để làm. Tôi không cố gắng để gây khó chịu. STUPID theo nghĩa đó không phải là một điều thông minh để làm. Và tôi chắc chắn rằng hầu hết mọi người sẽ KHÔNG BAO GIỜ làm điều này.
iharob


1
Đừng là người dùng windows. Đừng chạy mọi thứ như root.
Shahbaz

1
Đừng làm điều này! Điều này có thể thay đổi quyền sở hữu các tệp nguồn mà bạn lưu trong điều kiện này, cộng với quyền sở hữu .pro.user của bạn và các tệp cấu hình Qt Creator khác. Khi bạn chuyển trở lại chạy như một người dùng thông thường, bạn sẽ gặp lỗi và phải nhảy qua một số vòng để khôi phục mọi thứ. Tôi đã học được điều này một cách khó khăn ...
BuvinJ

1

Chạy nó như root là một ý tưởng khủng khiếp. Thay vào đó, hãy sử dụng nguồn và làm cho qtcreator sử dụng sudo để khởi chạy gdb như thế này. Yêu cầu bạn chạy qtcreator từ tty và auth sudo trước khi bạn khởi chạy qtcreator hoặc định cấu hình người dùng của bạn cho sudo không mật khẩu (không được khuyến nghị). Tôi sẽ mã hóa một giải pháp hoàn chỉnh hơn sau này.

Tôi mất tới 1-2 giờ mã / gỡ lỗi mà không có kiến ​​thức trước về QT. Hầu hết thời gian đó được dành để chờ quá trình biên dịch hoàn tất

https://gist.github.com/ppetraki/a0080da047047ea184c6

--- qtcreator-3.0.1.orig/src/plugins/debugger/gdb/gdbprocess.cpp +++ qtcreator-3.0.1/src/plugins/debugger/gdb/gdbprocess.cpp @@ -59,7 +59,11 @@ QByteArray GdbProcess::readAllStandardEr

void GdbProcess::start(const QString &cmd, const QStringList &args) { - m_gdbProc.setCommand(cmd, Utils::QtcProcess::joinArgs(args)); + QStringList sudoArgs; + sudoArgs << cmd << args; + QString sudoCmd = QString::fromUtf8("/usr/bin/sudo"); + + m_gdbProc.setCommand(sudoCmd, Utils::QtcProcess::joinArgs(sudoArgs)); m_gdbProc.start(); }


1

Tôi sẽ chạy chương trình từ một thiết bị đầu cuối với máy chủ GDB (với quyền root) và sau đó kết nối với máy chủ bằng gdb từ QtCreator. Bạn sẽ bắt đầu gdbserver với một cái gì đó như thế này:

$ sudo gdbserver host:2345 ./MyApp

Tại đây, bạn đang lưu trữ máy chủ với cổng 2345. Bạn cũng có thể kiểm tra xem ứng dụng của bạn có thực sự chạy với UID 0 hay không.

$ sudo ps -u

Bây giờ, trong Qt Creator, hãy gỡ lỗi -> Bắt đầu gỡ lỗi -> Đính kèm với Chạy máy chủ gỡ lỗi. Điền vào mẫu ... quan trọng nhất là địa chỉ cổng và máy chủ. Tôi đã chọn 127.0.0.1 và 2345. Bạn có thể chọn break at main để break ở đầu chương trình. Máy chủ GDB không khởi động chương trình cho đến khi bạn kết nối.


0

Các hành động sau được khuyến nghị trên diễn đàn hỗ trợ Qt:

Trong Qt Creator, thêm thiết bị Linux từ xa trong Tùy chọn -> Thiết bị. Đặt địa chỉ của nó là localhost và người dùng là root. Tạo một cặp khóa xác thực và dán khóa công khai vào /root/.ssh/authorized_keys. Sau đó, sao chép bộ máy tính để bàn trong Tùy chọn -> Bộ dụng cụ và đặt thiết bị cho bộ công cụ mới cho thiết bị bạn đã tạo ở bước trước.

Bây giờ, khi bạn bắt đầu gỡ lỗi, Qt Creator sẽ tự động kết nối qua ssh với localhost dưới dạng root, khởi động gdbserver và thực hiện gỡ lỗi.

Nó hoạt động để chạy mà không cần gỡ lỗi quá.

Có lẽ bạn nên thiết lập cài đặt chương trình của mình trên máy chủ từ xa, nhưng đó là một câu chuyện khác và nó được thực hiện khác nhau cho Qmake và QBS.

https://forum.qt.io/post/185983

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.