[PyQt] PyQt snapshot debug info

Hans-Peter Jansen hpj at urpla.net
Mon Dec 6 20:57:15 GMT 2010


Phil, 

sorry for being such a pest. This is the third time, I started with 
creating a bug report against rpm, but each time I noticed something
that points in your direction.

On Monday 06 December 2010, 18:01:27 Phil Thompson wrote:
> On Mon, 6 Dec 2010 14:59:11 +0100, "Hans-Peter Jansen"
> <hpj at urpla.net>
>
> >> >
> >> > Before I start to dig, do you have any idea, what might have
> >> > changed to result in this behavior?
> >>
> >> I can't think of any changes in the build system that might have
> >> caused it.
> >>
> >> The only thing related to source files that has changed is that
> >> SIP now generates full pathnames for #line.
> >
> > Hmm, that's probably the problem, as you don't always use absolute
> > names.
> >
> > QtCore/sipQtCoreQAbstractAnimation.cpp:
> >
> > #line 38
>
> "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip
>/QtCore/qabstractanimation.sip"
>
> > #include <qabstractanimation.h>
> > #line 39 "QtCore/sipQtCoreQAbstractAnimation.cpp"
> >           ^^^^^^
> > #line 39
>
> "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip
>/QtCore/qobject.sip"
>
> > #include <qobject.h>
> > #line 43 "QtCore/sipQtCoreQAbstractAnimation.cpp"
> > #line 36
>
> "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip
>/QtCore/qcoreevent.sip"
>
> > #include <qcoreevent.h>
> > #line 46 "QtCore/sipQtCoreQAbstractAnimation.cpp"
> > #line 38
>
> "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip
>/QtCore/qanimationgroup.sip"
>
> > #include <qanimationgroup.h>
> > #line 49 "QtCore/sipQtCoreQAbstractAnimation.cpp"
> > #line 315
>
> "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip
>/QtCore/qcoreevent.sip"
>
> > #include <qcoreevent.h>
> > #line 52 "QtCore/sipQtCoreQAbstractAnimation.cpp"
> >
> >
> > Checking:
> > $ objdump -g QtCore/sipQtCoreQAbstractAnimation.o
> > [...]
> > The section .debug_info contains:
> >
> >   Compilation Unit @ offset 0x0:
> >    Length:        0x13f0d (32-bit)
> >    Version:       2
> >    Abbrev Offset: 0
> >    Pointer Size:  4
> >  <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
> >     < c>   DW_AT_producer    : (indirect string, offset: 0xd552):
> > GNU
>
> C++
>
> >     4.3.2 [gcc-4_3-branch revision 141291]
> >     <10>   DW_AT_language    : 4        (C++)
> >     <11>   DW_AT_name        : (indirect string, offset: 0xa879):
> >     sipQtCoreQAbstractAnimation.cpp
> >     <15>   DW_AT_comp_dir    : (indirect string, offset: 0xd601):
>
> /usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtCo
>re
>
> >     <19>   DW_AT_low_pc      : 0x0
> >     <1d>   DW_AT_high_pc     : 0x1ed0
> >     <21>   DW_AT_stmt_list   : 0x0
> > [...]
> >
> > These do not match, resulting in the effects shown above.
> >
> > Always using absolute paths probably solves this. What do you
> > think?
>
> Why is using a relative filename (ie. no path) ok, but not a relative
> pathname?

The problem here is, that you compile inside QtCore (e.g. without paths):

g++ -c -pipe -march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 
-fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -fPIC -g -Wall 
-W -D_REENTRANT -DSIP_PROTECTED_IS_PUBLIC -Dprotected=public -DQT_CORE_LIB -I. 
-I/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/qpy/QtCore
 -I/usr/include/python2.6 -I/usr/mkspecs/linux-g++ -I/usr/include/QtCore -I/usr/include 
-o sipQtCoreQAbstractAnimation.o sipQtCoreQAbstractAnimation.cpp 

while the source contain them, hence they get doubled. This time, 
I proved my claim here by using:

find Qt* phonon -name \*.cpp -exec sed -i 's/^\#line \([0-9]\+\) "\([^\/].*\)\/\(.*\)"/#line \1 "\3"/g' {} \;

e.g. removing the first relative path argument.

QtCore/sipQtCoreQAbstractAnimation.cpp excerpt:

#include "sipAPIQtCore.h"

#line 38 "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip/QtCore/qabstractanimation.sip"
#include <qabstractanimation.h>
#line 39 "sipQtCoreQAbstractAnimation.cpp"
          ^^^: no QtCore/
#line 39 "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip/QtCore/qobject.sip"
#include <qobject.h>
#line 43 "sipQtCoreQAbstractAnimation.cpp"
#line 36 "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip/QtCore/qcoreevent.sip"
#include <qcoreevent.h>
#line 46 "sipQtCoreQAbstractAnimation.cpp"
#line 38 "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip/QtCore/qanimationgroup.sip"
#include <qanimationgroup.h>
#line 49 "sipQtCoreQAbstractAnimation.cpp"
#line 315 "/usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/sip/QtCore/qcoreevent.sip"
#include <qcoreevent.h>
#line 52 "sipQtCoreQAbstractAnimation.cpp"

é voila:

+ /usr/lib/rpm/find-debuginfo.sh /usr/src/packages/BUILD/PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/bin/pyrcc4
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/bin/pylupdate4
WARNING: /usr/lib/qt4/plugins/designer/libpythonplugin.so is already stripped!
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/dbus/mainloop/qt.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/Qt.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtDesigner.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/phonon.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtXmlPatterns.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtXml.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtWebKit.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtTest.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtSvg.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtSql.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtScriptTools.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtScript.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtOpenGL.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtDeclarative.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtNetwork.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtMultimedia.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtHelp.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtGui.so
extracting debug info from /var/tmp/python-qt4-4.8.2-build/usr/lib/python2.6/site-packages/PyQt4/QtCore.so
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtCore/Auto-generated: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtCore/QtCore/sipAPIQtCore.h: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtDeclarative/Auto-generated: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtDeclarative/QtDeclarative/sipAPIQtDeclarative.h: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtDesigner/Auto-generated: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtGui/Auto-generated: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtGui/QtGui/sipAPIQtGui.h: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtSql/Auto-generated: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtSvg/QtSvg/sipAPIQtSvg.h: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtWebKit/Auto-generated: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtWebKit/QtWebKit/sipAPIQtWebKit.h: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/QtXml/Auto-generated: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/qpy/QtCore/QtCore/sipAPIQtCore.h: Cannot stat: No such file or directory
cpio: PyQt-x11-gpl-snapshot-4.8.2-24a6ba5f4f0f/qpy/QtDeclarative/QtDeclarative/sipAPIQtDeclarative.h: Cannot stat: No such file or directory

Okay, I missed the *.h files, but that nicely shows the difference :-)

Convinced?

Pete


More information about the PyQt mailing list