[Qt-creator] Remote debugging with GDB-multiarch not sending command line arguments

Eike Ziller Eike.Ziller at qt.io
Fri Jul 3 09:24:02 CEST 2020

> On Jul 2, 2020, at 23:00, Pablo Rogina <pablojr at gmail.com> wrote:
> Hi, this is a follow up to my issue. I guess I found what's happening
> but I was not able to fix it...
> I did run an external gdb-multiarch remote debug session in MI mode
> using all the commands QtCreator passes to the debugger. However, I
> skipped the unset environment commands for all the env variables as
> QtCreator does, and the session run very well.
> Then I realized that one of the variables being unset by QtCreator is
> DISPLAY, so I repeated a new external gdb-multiarch remote session in
> MI mode, sending all the commands as QtCreator and unset environment
> variable DISPLAY and session crashes.
> And that behavior makes sense as I now realized that the same is
> happening when pressing F5, see the Output Application pane below, Qt
> app cannot connect to display since the env variable was unset.
> qt.qpa.xcb: could not connect to display
> qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even
> though it was found.
> So looking in source code (src/plugins/debugger/gdb/gdbengine.cpp)
> method void GdbEngine::setEnvironmentVariables() there's a loop that
> sets or unsets every variable. But I couldn't understand what's the
> criteria for any variable to have operation as EnvironmentItem::Unset

This takes the difference between the host environment and the environment from your “inferior” environment, which afaics should be the environment that you see in the “Environment” part of your run configuration.
Environemnt variables in the host environment that are not in the inferior environment, are unset.

Br, Eike

> if (item.operation == EnvironmentItem::Unset)
> runCommand({"unset environment " + name});
> else
> runCommand({"-gdb-set environment " + name + '=' + item.value});
> In addition, I tried adding set environment DISPLAY = :0 in the Attach
> Additional Commands but it has the same effect: app crashes since
> could not attach to display...
> Thanks. Pablo
> On Thu, Jul 2, 2020 at 12:17 PM Pablo Rogina <pablojr at gmail.com> wrote:
>> Christian,
>> again, by looking at the Application Output pane, where I can see
>> gdbserver starting on remote device, the port number, etc.
>> But mostly by the fact that the debug session for my Qt application
>> CRASHES since the xcb plugin isn't loaded.
>> So somehow even when the proper -exec-args command is sent from
>> QtCreator to the debugger is not being used or properly setup, I don't
>> know.
>> On the other hand I am able to debug the same Qt app/device etc. by
>> using option Debug/Start Debugging/Attach to Running Debug Server or
>> if I run the debug session externally to QtCreator.
>> So I am confident that remote debugging for that Qt app with X
>> forwarding does work
>> Thanks. Pablo
>> On Thu, Jul 2, 2020 at 12:11 PM Christian Kandeler
>> <christian.kandeler at qt.io> wrote:
>>> On Thu, 2 Jul 2020 09:37:51 -0300
>>> Pablo Rogina <pablojr at gmail.com> wrote:
>>>> I see. I'm not familiar with GDB/MI mode so that could be the right
>>>> approach then, but the end result at least for me is that the
>>>> arguments don't reach the remote program under debug
>>> Again, how do you know that?
>>> Christian
>>> _______________________________________________
>>> Qt-creator mailing list
>>> Qt-creator at qt-project.org
>>> https://lists.qt-project.org/listinfo/qt-creator
> _______________________________________________
> Qt-creator mailing list
> Qt-creator at qt-project.org
> https://lists.qt-project.org/listinfo/qt-creator

Eike Ziller
Principal Software Engineer

The Qt Company GmbH
Erich-Thilo-Straße 10
D-12489 Berlin
eike.ziller at qt.io
Geschäftsführer: Mika Pälsi,
Juha Varelius, Mika Harjuaho
Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 144331 B

More information about the Qt-creator mailing list