Sau khi tìm kiếm lý do khiến các câu lệnh qDebug() hoạt động tốt với trình xử lý tin nhắn tiêu chuẩn của Qt nhưng không thành công khi tôi tự chuyển sang xem liệu có ai có bất kỳ trải nghiệm nào với sự cố không.Qt5 chuyển hướng câu lệnh qDebug() tới giao diện Qt Creator 2.6 như thế nào
Những điều tôi biết về/đã cố gắng, mà không làm gì cả ...
1) CONFIG += console
2) DEFINES -= QT_NO_WARNING_OUTPUT QT_NO_DEBUG_OUTPUT
3) ::fprintf(stderr, "ERROR\n"); ::fflush(stderr);
4) ::fprintf(stdout, "OUTPUT\n"); ::fflush(stdout);
5) std::cerr << "CERROR" << std::endl; std::cerr.flush();
Tuy nhiên nó hoạt động một cách chính xác khi sử dụng được xây dựng trong xử lý (tức là nó in ra thông điệp tới QtCreator console)
int main(int argc, char *argv[]) {
// Use my handler
qInstallMessageHandler(MyCustomLogger);
qDebug() << "Not Printed";
// Use standard handler
qInstallMessageHandler(0);
qDebug() << "Correctly Printed";
// Use my handler again
qInstallMessageHandler(MyCustomLogger);
qDebug() << "Not Printed Again...";
}
Các thử nghiệm gần đây nhất đã được phân bổ cho mình một giao diện điều khiển sử dụng các lệnh WINAPI kết quả này trong các hành vi đúng tất cả đầu ra để stderr và stdout có thể nhìn thấy trên giao diện điều khiển tôi tạo ra. Tuy nhiên, đây không phải là hành vi tôi muốn, tôi muốn có thể xem kết quả này trong QtCreator.
Bất kỳ suy nghĩ nào về cách trình xử lý thông báo chuẩn in tới trình gỡ rối? Tôi chưa tìm được trong nguồn Qt.
Trên cửa sổ, qDebug() sử dụng các kênh debug, không stderr. –
Tôi phải thừa nhận tôi chưa bao giờ nghe nói về kênh gỡ lỗi trước đây, tắt đến google. –