[OE-core] [PATCH 01/17] conf/bitbake.conf package.bbclass: fix dbg package not contain sources while -fdebug-prefix-map used

Andreas Müller schnitzeltony at googlemail.com
Mon Apr 18 21:05:49 UTC 2016


On Mon, Apr 18, 2016 at 8:50 PM, Mark Hatle <mark.hatle at windriver.com> wrote:
> On 4/18/16 9:16 AM, Andreas Müller wrote:
>> On Mon, Apr 18, 2016 at 3:55 PM, Burton, Ross <ross.burton at intel.com> wrote:
>>>
>>> On 18 April 2016 at 14:08, Hongxu Jia <hongxu.jia at windriver.com> wrote:
>>>>
>>>> If sysroot is required, override DEBUG_FLAGS to remove -fdebug-prefix-map
>>>
>>>
>>> We should probably get this in the release notes, as many people do indeed
>>> want remote debug to work.
>>>
>>> Can you tell gdb the base path to use when looking for symbols?  I've not
>>> done remote GDB for some time but wouldn't "set substitute-path /
>>> //my/sysroot/" work?  Or maybe /usr /my/sysroot/usr?
>>>
>>> If gdb can't be told then instead of having to replace all of DEBUG_FLAGS it
>>> would be neat if the prefix mapping variables where in another variable that
>>> could just be unset.
>>>
>>> Ross
>> OK I think I could live with removing -fdebug-prefix-map for now.
>>
>> A thought: We have the setting IMAGE_GEN_DEBUGFS - I have not yet
>> tested. As far as I understand it creates an unstripped sysroot and
>> does not affect target rootfs - is that correct? Does the sysroot
>> created by IMAGE_GEN_DEBUGFS contain the sources? If yes we could set
>> that as sysroot for gdb.
>>
>> I think one of the problems we have here is that there is no reference
>> way documented (or it is outdated) how remote debugging is meant to be
>> performed.
>
> Remote debugging is setup to always assume the remote side has access to a
> debugable sysroot.
Just that I get this right: remote = target? If yes: Where do you get
this from? Or - have you ever run a remote session with files taken
from target? I have: see caffeine/colleagues section below.
> This isn't the project's sysroot, since that is transient,
> but a REAL matching sysroot to the main image.
If you say transient: Do you mean status of last build. Isn't that
what I am usually looking for when debugging?
>
> The easiest way to do this is to add the following to your local.conf:
>    IMAGE_GEN_DEBUGFS = '1'
This exactly what I've asked for in my previous mail - further comments below.
>
> After this, look in your deploy directory and you will see the image to deploy
> to the target, and also a matching 'debug' chunk that you keep on your local
> host.  This way you -know- they are always in sync.
You really want me to wait for building an full image after each
modification - I will either die for caffeine overdose or my
colleagues will kill me...
>
> There is class material from the various Yocto Project Dev Day classes on using
> this.
>
>
> The alternative is tell GDB itself to map directories.  I don't remember offhand
> the right option, but GDB supports remapping a directory reference to an actual
> directory.  It should be pretty simple to re-map it -- but due to the transient
> nature of the sysroot directory in the build, I don't recommend doing it this way.
>
We are using remote debugging with build sysroot almost daily and we
do that since we use openembedded. The more I learn here it seems
nobody else does remote debugging. How do you fix bugs?

I'll remove -fdebug-prefix-map and wait till remote debugging breaks
again - maybe then completely. That scares me as I am loosing the
possiblity to start a remote debug session on an productive image
within seconds.

Andreas



More information about the Openembedded-core mailing list