我写了一个Qt应用程序,它在Ubuntu Background中作为守护进程运行。这个应用程序在一个随机时间后崩溃,我想看看它崩溃时会给出什么错误。
我编写了这个语法,看看我是否可以在文本中获取其输出:
dimit@dimit-FX620DX:~$ ./Myapp &> DebugInfo.txt
但它不会在文本文件中写任何内容。我写了这个简单的程序来模拟更大的项目
Mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <stdio.h>
#include <iostream>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
std::vector<int> Test;
Test[-1] = 90; //in here it gives segmentation fault error and exits the program
}
MainWindow::~MainWindow()
{
delete ui;
}
这是运行此代码时终端的输出:
dimit@dimit-FX620DX:~/QtProjects/Test/Test-build-desktop-Qt_4_8_1__System__Debug$ ./Myapp &> DebugInfo.txt
Aborted (core dumped)
我希望在DebugInfo.txt文件中看到“Aborted(core dumped)”,但没有写入任何内容。我该怎么办?
我在Ubuntu 12.04下使用Qt 4.8
答案 0 :(得分:1)
程序不打印“Aborted(core dumped)”文本,在程序终止后由shell 打印。所以,解决方案很简单,在另一个shell中运行程序,并重定向它的输出:
sh -c ./Myapp &> DebugInfo.txt
(-c
使shell作为命令行执行命令,并且是必需的,因为没有它sh
会尝试将./Myapp
作为shell脚本运行并失败。)< / p>