How can i inspect .dmp files from windows with QtCreator - qt

We are developing out Project with QtCreator 3.1.1 and Qt 5.2.1
Now we got .dmp files from C:\Users\<USER>\AppData\Local\CrashDumps
How can we load them into QtCreator to inspect where the App crashed?

I don't have enough rep to leave this as a comment, but I don't believe Qt can open the .dmp files, they are more of a Microsoft thing. Visual Studio should work if you want to look at it, they have a free community version you can use.
However, that dmp file might not be overly useful, it will likely tell you what you already know (memory access error, etc). These are "small memory dump files" ( you can read more about accessing and configuring them here: https://support.microsoft.com/en-us/kb/315263 ). They have interesting information, but not necessarily the stack trace you're looking for. For example, the stack trace may just be the QtGui and QtCore dll's.
If the crash is reproducible you might have better luck causing the crash on a machine with Qt Creator installed so you can send it directly to debug as it crashes, assuming it's not reproducible when running locally in Qt.

Related

Qt application crash on Wayland

I've recently installed Ubuntu 22.04 LTS on my development laptop. Previously I was running 18.04 so this is my first experience of Wayland. I did a clean installation on a new disc. I had relatively few problems reinstalling gitkraken and cloning the repository of my source code from github but when I came to install the Qt libraries this is where my problems started. The on-line installer from the Qt website simply wouldn't run. It just exited silently. I eventually found an old version of the on-line installer executable in a backup of my downloads folder from Ubuntu 18.04 and was able to use this to download and install the same version of the Qt libraries that I was using previously (5.15.0). This is also the same version that I use on my other development machine which runs Windows 10. Keeping the two in step is useful and upgrading too many things at the same time seemed like asking for trouble. I installed the latest versions of Qt Creator (7.0.1) and g++ (11.2.0).
I was then able to build my application and, after a brief search of stack overflow I added "-platform wayland" to the command line arguments setting in Qt Creator but the application crashed almost immediately on start-up with the error "The Wayland connection experienced a fatal error: Protocol error".
Several things made me think this might be a bug in the Qt libraries rather than my application (none of them definitive!):
At the point of application exit, apart from main() there is none of my application code in the call-stack (see below)
My application has been stable for a long time and has survived several operating system, compiler and Qt version changes across two OS families
The fact that the latest Qt on-line installer (itself almost certainly a Qt application) wouldn't run
I downloaded Qt 5.15.12 (the latest Qt 5 version available) and rebuilt my application against that but the result was the same.
The next step is obviously to strip my application right down to something minimal that still shows the problem but before I do I was wondering whether this is something other people have come across when migrating a Qt5 application to Wayland and whether I need to take the bigger step of upgrading to Qt6? The Qt Wiki describes Qt 5.11 as being "stable" with Wayland.
The call stack at the time of the error looks like this:
qt_message_fatal
QMessageLogger::fatal
QtWaylandClient::QWaylandDisplay::checkError
QtWaylandClient::QWaylandDisplay::flushRequests
doActive
QMetaObject::activate
QSocketNotifier::activated
QSocketNotifier::event
QApplicationPrivate::notify_helper
QApplication::notify
QCoreApplication::notifyInternal2
QCoreApplication::sendEvent
socketNotifierSourceDispatch
g_main_context_dispatch
??
g_main_context_iteration
QEventDispatcherGlib::processEvents
QEventLoop::exec
QCoreApplication::exec
main
Many thanks.
It's something to do with QDialog::setMaximumSize. The call to setMaximumSize itself does not crash but if I remove all calls to it the application works fine. Some controls do subjectively seem bigger on Wayland so I wonder if Qt 5 on Wayland crashes if the size of the QDialog contents exceeds the maximum size specified. This certainly doesn't cause a crash in Qt 5 on Windows and didn't in Qt 5 on Ubuntu prior to the switch to Wayland. I think this is a Qt bug but of course it may well be fixed in a later version of Qt and there's an easy enough work-around now I know the cause.
I was using setMaximumSize to allow the dialog to expand dynamically as widgets were added but to prevent the user from making the window any bigger than it needed to be. layout()->setSizeConstraint(QLayout::SetFixedSize); achieves the same thing.

SIGSEGV fault in qml application on app.exec()

I'm trying to set up the environment on the new machine for our application written on Qt15.2 with GCC compiler version 10.2, and because it is a windows application, I get the qt and gcc from the MSYS2.
The compiling process is going well, but when I'm trying to launch the application, it crashes with the message: "the program has unexpectedly finished. the process was ended forcefully"
The same I obtained if trying to compile a blank qml app with a single ApplicationWindow in it.
I will be very grateful for your help.
The solution was found - I used "dependencies" (https://github.com/lucasg/Dependencies) to find out, which .dll libraries are missing. The problem was in some Windows libraries because it was a fresh system downloaded from Microsoft site without any updating made yet and seems to be very old. I had updated the system and everything is working fine now.

Configuring a compiler for Qt

I have been attempting to learn how to use Qt. So far, setup for this program has proven to be a miserable process. I've downloaded the 5.1 Windows 64 bit offline with VS 2012. I tried to run a simple program and received an error telling me to "configure the compiler". After extensive research I thought I configured the compiler. Then I received an error telling me that the "path or permission wrong". After fussing with it for hours, I uninstalled and downloaded it again. Now I'm attempting to configure the compiler before I build a program, but no compilers are being detected. VS was downloaded with Qt so I don't understand why it wouldn't detect a compiler within it's own directory. I have no idea how to set this program up. Setups seem so vastly different that researching it is a nightmare. If anyone can help that would be great.

deploying a Qt application

In a nutshell, the question is: I just finished my first application using Qt Creator on a computer running under Linux Ubuntu, now how do I make this available for everyone. Now follows the more detailed version ;)
I must apologize for asking this, I am aware that this question has probably been asked many times and that there is official documentation that I can read. I am just completely new to programming and I am very confused by everything I've read so far. If you are kind enough to help, please assume I know absolutely nothing :)
Here we go: I've just finished designing my first application (a scientific program) with Qt creator on my laptop which runs under Linux Ubuntu. It works fine and I'm very proud of it ;)
Here's what my project consists of: 40 header files, 42 source files, 1 pro file, 1 qrc file, 1 html file and 7 png files. In the code, I use #include for a bunch of fairly standard Qt classes (QWidget, QTextBrowser and so forth, maybe like 40 of those).
Now I'd like to make it available to other people. For Linux and Mac users, I've figured a way to do that: I can compress the folder containing my project, tell them to install Qt on their computer, then download and extract the files on their hard disk, open a terminal in the folder and run
qmake myProject.pro
qmake
make
That seems to work fine (by the way, does it matter that this is not precisely what Qt creator does? The qmake step there is qmake-qt4 myProject.pro -r -spec linux-g++ and the make step is make -w). Now, I assume there is a solution where I don't ask them to download and install something like 200Mo of Qt material. As for Microsoft Windows users, I don't have a clue.
I would be very grateful if you could explain to me in a very concrete way what I need to do. Needless to say, I'll go for the best and easiest solution, I don't need to understand everything about deployment. Many thanks in advance!
Edit: In case that's useful : I've been using Qt Creator 2.5.0 based on Qt 4.8.1 (64 bit), I'm working on a laptop with Ubuntu 12.04 64bits
For Linux and Mac users, I would compile the software for them in 32 and 64bit formats - no-one likes compiling unknown software from source. Obviously keep the source code option for those on more unusual architectures/OSs (and provide a shell script for them that mimics the commands Qt Creator calls!). As Qt runtimes are available from package managers on just about every distro (and come pre-installed on most anyway, KDE requires them for example), by not asking them to compile from source your users will have a much smaller download (if any) and won't require them to download software from a website potentially unknown to them. Of course the best way would be to try to get your software added as a package into the major distros' repositories, but that may take some time to organise.
Compile your software for Windows users for both 32 and 64bit formats. It's generally frowned upon to ask users to download runtime libraries they potentially don't know, and put them into their system32 folder... So most applications bundle all the libraries they need with their application. Qt-based applications are no different, and so put the runtimes into the folder where the executable is. Also it is much more professional to create a proper installer, there are a few free installer applications for Windows, a web search will give you the most popular (I think I saw a thread on SO about it as well).
As you can see the platforms aren't too dissimilar, the main point I would make is: Do not force people to compile from source! The vast majority of people on Earth do not even know what compiling is, so provide for the major arrchitectures/OSs yourself.

Finished coding desktop app in Qt. How to deploy and distribute it?

Ok, this is indeed a newbish question but I have to take a first step somewhere.
I've just had experience with DevC++ console applications, which means a simple .exe would be produced from the compiling, running from cmd. That was all, you could send the .exe to a gentleman running the same OS and he could run your little program.
What happens with Qt Creator projects, though? I've finally finished my dekstop application, wrote and debugged everything that needed to be done, I sort of have some nice GUI going, everything's working nice but... How do I acually give it to other people that don't have QtC to run it through?
Any guide that covers this?
Deployment
Here are some guides helping you to deploy your application on different platforms:
X11
Windows
Mac OS X
Embedded Linux
Symbian
Installation
I can highly recommend
NSIS
Inno Setup
Distribution
Have a look at this site. Here you can present your application to others and let them download it.
The subject of your question is simple, but I'm sure it will help many people! Your question is a good contribution.
Well, last thing you do is find out dependencies - shared libraries, and squeeze that all into installer. :)
Resources:
Qt has a nice page called Deploying an Application on Windows, as a part of their documentation. So all the dependencies related stuff is covered there.
List of best free installers is available here.
My suggestion is to invest some time in writing a CMake script and then using CPack for the distribution.
Here is a very simple example
http://www.cmake.org/Wiki/BundleUtilitiesExample
with this you are able to deploy a mac application. Then you can also extend it to create Debian or RPM packages!
The CMake mailing list is always a source of useful suggestion.
In windows you probably have to redistribute the Qt DLL with your program, as well as for Mac you have to include Qt libraries in your bundle.

Resources