GithubHelp home page GithubHelp logo

kdab / gammaray Goto Github PK

View Code? Open in Web Editor NEW
1.6K 101.0 281.0 33.29 MB

GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some extent.

Home Page: https://www.kdab.com/gammaray

License: Other

Emacs Lisp 0.01% CMake 6.64% Shell 0.16% C++ 89.88% Makefile 0.01% QML 0.54% QMake 0.11% GLSL 0.38% Roff 1.77% Python 0.37% C 0.14% Ruby 0.01%
kdab qt

gammaray's Introduction

Logo

GammaRay is a software introspection tool for Qt applications developed by KDAB. Leveraging the QObject introspection mechanism it allows you to observe and manipulate your application at runtime. This works both locally on your workstation and remotely on an embedded target.

Augmenting your instruction-level debugger, GammaRay allows you to work on a much higher level, with the same concepts as the frameworks you use. This is especially useful for the more complex Qt frameworks such as model/view, state machines or scene graphs.

Among other things GammaRay can:

  • Browse the QObject tree with live updates.
  • View and edit object properties.
  • View and invoke slots of a QObject, and monitor its signals.
  • List all QObject inbound and outbound signal/slot connections.
  • Provide a layout information overlay for QWidget and QtQuick2 applications.
  • Inspect all QPainter operations used to draw a specific widget.
  • Browse the QtQuick2 item tree and scenegraph.
  • Inspect shaders and geometry data of QtQuick2 items.
  • Plot object lifetime and emitted signals.
  • Browse the QAbstractProxyModel hierarchy and inspect intermediate results in a proxy model chain.
  • Visual live inspection of QStateMachines.
  • Browse the item tree of any QGraphicsView scene.
  • Show a live preview of QGraphicsView items, including showing their coordinate system, transformation origin, rotate/zoom/pan, etc.
  • Intercept translations and change them at runtime.
  • Inspect all building blocks of a QStyle.
  • Show all QTimers and their statistics (number of wakeups, wakeup time, ...)
  • Browse all QTextDocuments, along with the ability to edit them and view their internal structures.
  • Act as a complete java script debugger, attachable to any QScriptEngine (including the usually not accessible one used by QtQuick1 internally).
  • Perform HTML/CSS/DOM/JS introspection/editing/profiling on any QWebPage, thanks to QWebInspector.
  • Browse the QResource tree and its content.
  • Show all registered meta types.
  • Show all installed fonts.
  • Show all available codecs.

Building GammaRay

See installation notes

Contact

Stay up-to-date with KDAB product announcements:

Get Involved

If you want to contribute, please check out: https://github.com/KDAB/GammaRay/wiki/Get-Involved

Please submit your contributions or issue reports from our GitHub space at https://github.com/KDAB/GammaRay.

KDAB will happily accept external contributions; however, all contributions require a signed KDAB Copyright Assignment Agreement.

This is needed so we can continue to dual-license GammaRay. Contact [email protected] for more information.

Thanks to our contributors.

License

The GammaRay Software is © Klarälvdalens Datakonsult AB (KDAB), and is available under the terms of the GPL version 2 (or any later version, at your option). See GPL-2.0-or-later.txt for license details.

Contact KDAB at [email protected] to inquire about commercial licensing.

For terms of redistribution, refer to the corresponding license agreement.

Note that this software relies on 3rd party MIT-licensed projects and various other freely distributable files some of which are unused only for testing and not part of the application itself.

About KDAB

GammaRay is supported and maintained by Klarälvdalens Datakonsult AB (KDAB).

The KDAB Group is the global No.1 software consultancy for Qt, C++ and OpenGL applications across desktop, embedded and mobile platforms.

The KDAB Group provides consulting and mentoring for developing Qt applications from scratch and in porting from all popular and legacy frameworks to Qt. We continue to help develop parts of Qt and are one of the major contributors to the Qt Project. We can give advanced or standard trainings anywhere around the globe on Qt as well as C++, OpenGL, 3D and more.

If you would like to have a custom plugin for GammaRay to visualize, profile or debug your own specific components or applications, get in touch with us via https://www.kdab.com/contact. KDAB engineers know how to write GammaRay plugins and can be contracted to help you get yours working and improve your development efficiency.

GammaRay and the GammaRay logo are registered trademarks of Klarälvdalens Datakonsult AB in the European Union, the United States and/or other countries. Other product and company names and logos may be trademarks or registered trademarks of their respective companies.

gammaray's People

Contributors

02jandal avatar aholza avatar akreuzkamp avatar bog-dan-ro avatar chsterz avatar dantti avatar danvratil avatar dfaure avatar dfaure-kdab avatar ferdnyc avatar giucam avatar hasselmm avatar krf avatar mattkdab avatar milianw avatar mkrus avatar montel avatar nicolasfella avatar pasnox avatar pre-commit-ci[bot] avatar redstrate avatar sengels avatar shaan7 avatar theonering avatar tilladam avatar tmcguire avatar tokoe-kdab avatar vkrause avatar waqar144 avatar winterz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gammaray's Issues

Fix invalid conversion from ‘const char*’ in statemachineviewer plugin

Ubuntu 10.04 / g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3

/home/jchris/Projects/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.h: In function 
‘int GammaRay::_gvLayout(GVC_t*, graph_t*, const char*)’:
/home/jchris/Projects/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.h:67: 
error: invalid conversion from ‘const char*’ to ‘char*’
/home/jchris/Projects/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.h:67: 
error:   initializing argument 3 of ‘int gvLayout(GVC_t*, graph_t*, char*)’

Linking CXX shared library Issue on Windows

I'm trying to compile this on windows and I get the error

Linking CXX shared library ..\bin\libgammaray_common-qt4.8-GNU-i686.dll
CMakeFiles\gammaray_common.dir/objects.a(klinkitemselectionmodel.cpp.obj):klinki
temselectionmodel.cpp:(.text+0x38): undefined reference to `_imp___ZN19QItemSele

Assert failed caused by timertop plugin

I'm getting an assert caused by the timer top plugin:
gammaray

This seems to be caused by the plugin setting a dynamic property, from the main loop, on a QTimer that was created in a thread.

Failing to attach to Qt application on Mac OS X 10.6.8

Trying to attach to my Qt 4.8.1 based application I get this error using latest gammaray from git:

ruediger:build tobias$ ~/gammaray/bin/gammaray
QProcess: Destroyed while process is still running.
/Users/tobias/dev/rep/GammaRay/build/46294: No such file or directory
Unable to call function "gammaray_probe_inject" at 0x11e835ff0: no return type information available.
To call this function anyway, you can cast the return type explicitly (e.g. 'print (float) fabs (3.0)')

Linker error on tag 2.1.2 with Windows+Visual Studio 2008

I get the following linker error when trying to build GammaRay 2.1.2:

[ 0%] Built target gammaray_common_automoc
Linking CXX shared library ..\bin\gammaray_common-qt4.8-MSVC-debug-i686.dll
Creating library gammaray_common-qt4.8-MSVC-debug-i686.lib and object gammara
y_common-qt4.8-MSVC-debug-i686.exp
message.cpp.obj : error LNK2019: unresolved external symbol "public: __thiscall
GammaRay::Message::Message(class GammaRay::Message const &)" (??0Message@GammaRa
y@@QAE@ABV01@@z) referenced in function "public: static class GammaRay::Message
__cdecl GammaRay::Message::readMessage(class QIODevice *)" (?readMessage@Message
@GammaRay@@sa?AV12@PAVQIODevice@@@z)
QtCored.lib(qeventdispatcher_win.obj) : error LNK2019: unresolved external symbo
l _WSAAsyncSelect@16 referenced in function "public: void __thiscall QEventDispa
tcherWin32Private::doWsaAsyncSelect(int)" (?doWsaAsyncSelect@QEventDispatcherWin
32Private@@qaexh@Z)
..\bin\gammaray_common-qt4.8-MSVC-debug-i686.dll : fatal error LNK1120: 2 unreso
lved externals
LINK Pass 1 failed. with 1120
NMAKE : fatal error U1077: '"C:\Program Files\CMake 2.8\bin\cmake.exe"' : return
code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\nmake.exe"' : return code '0x2'
Stop.

Versions are as follows:
GammaRay 2.1.2
Qt 4.8.4
VS 2008
CMake 2.8.12.2
Windows 7 (32 bit)

Ensure gammaray_probe can be found in the build tree

Ubuntu 10.04 / g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3

In config-gammaray.h.cmake, currently GAMMARAY_BUILD_DIR is specified as

#define GAMMARAY_BUILD_DIR "${CMAKE_BINARY_DIR}"

This prevent the gammayray_probe library from being loaded properly because it is currently built into the core sub directory and the method findProbe is not searching into that sub directory but directly in GAMMARAY_BUILD_DIR instead.

Multiple versions coinstallability

AFAIK, gammaray installs some binaries/headers to the bin/include/lib directories with fixed names. Therefore, it is impossible right now to install both Qt4 and Qt5 versions of gammaray at the same time (in the same prefix). I use gammaray to debug Qt theme in both Qt4 and Qt5 applications (which works great!!!) and it will be really useful to have both of them.

One possible solution is to allow adding custom suffixes with a compile time argument, so that the executable can be named gammaray-qt{4,5}, the header files can be installed to /usr/include/qt{4,5}/gammaray, and the libraries can be named libgammaray_common_qt{4,5}.so etc. This way, it will not break any existing build (the suffixes can default to empty) and it allows distributions to easily custimize the names to fit their policy with the compile time argument.

I can try to submit a pull request if this solution is accpetable.

GammaRay cause application under test to crash

We have a big desktop QML application. I was trying to debug some visual issues with GammaRay, but when our application connects to a server and start receiving data, it crashes (according to GammaRay) at a point where it doesn't crash in QtCreator/gdb. There doesn't appear to be any relevant information in the console, and GammaRay doesn't tell anything useful either.

GammaRay is started on the console with the application as an argument

GammaRay compiled from latest master as of today, with Qt 5.3.0 on 64 bit Kubuntu 14.04

cannot inspect QStateMachine

The statemachine view is not selectable on the sitepanel.

Enviroment: Qt5.3-mvsc12 compiled with graphviz 2.38 and cgraph library. Also KDSME ist installed and found by cmake. Gammaray is compiled as debug build. So is the test application.

It seems that the plugin is compiled. At last gammaray_statemachineviewer_plugin.dll is in the plugins directory and it is listet in the Plugins-Info-Panel.

I created a statemachine like this:

this->m_stateMachine = new QStateMachine(this);
QState *s1 = new QState();
QState *s2 = new QState();
QState *s3 = new QState();
QState *s4 = new QState();
QFinalState *final = new QFinalState();

s1->addTransition(this,SIGNAL(signal_a()),s4);
s4->addTransition(this,SIGNAL(signal_b()),s2);
s2->addTransition(this,SIGNAL(signal_c()),s4);
s4->addTransition(this,SIGNAL(signal_d()),s3);
s3->addTransition(this,SIGNAL(f()),s1);
s1->addTransition(this,SIGNAL(final()),final);

this->m_stateMachine->addState(s1);
this->m_stateMachine->addState(s4);
this->m_stateMachine->addState(s2);
this->m_stateMachine->addState(s3);
this->m_stateMachine->addState(final);

this->m_stateMachine->setInitialState(s1);
this->m_stateMachine->start();

also the QStateMachine Object is not visible in the Objects tree of GammaRay although the parent object (this) is.

Setting the statemachine as property will produce an qWarning:

 Q_PROPERTY(QStateMachine* State MEMBER m_stateMachine)

 qWarning: Cannot serialize QVariant of type QStateMachine*

Fix error: ‘struct textlabel_t’ has no member named ‘pos’ in statemachineviewer plugin

Ubuntu 10.04 / g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3

/home/jchris/Projects/GammaRay/plugins/statemachineviewer/gvgraph/gvgraph.cpp:393: error: ‘struct textlabel_t’ has no member named ‘pos’
/home/jchris/Projects/GammaRay/plugins/statemachineviewer/gvgraph/gvgraph.cpp:394: error: ‘struct textlabel_t’ has no member named ‘pos’
$ dpkg -s graphviz-dev
Package: graphviz-dev
Status: install ok installed
Priority: optional
Section: devel
Installed-Size: 76
Maintainer: Ubuntu Core Developers <[email protected]>
Architecture: all
Source: graphviz
Version: 2.20.2-8ubuntu3
Depends: libgraphviz-dev
Description: transitional package for graphviz-dev rename
 Graphviz is a set of graph drawing tools. See the description of the graphviz
 package for a full description.
 .
 This package is targeted at easing the upgrade from older graphviz-dev to the
 new libgraphviz-dev package.
 .
 This package can be purged at anytime once the libgraphviz-dev package has
 been installed.
Homepage: http://www.graphviz.org/
Original-Maintainer: David Claughton <[email protected]>

Crash during inspection GraphicsScene.

Sequence to reproduce:

  • launch "qt4/examples/graphicsview/portedcanvas/portedcanvas" from gammaray launcher.
  • select "graphics scenes" tab and select any graphics item to view its properties.
  • on inspected application: File->Erase Canvas (Ctrl+E).

As result: Gammaray with inspected application crashes.
It looks like that there is no mechanism that handles GraphicsItem deletion on inspected scene.

Program received signal SIGSEGV, Segmentation fault.
0x095195e0 in ?? ()
(gdb) bt
#0  0x095195e0 in ?? ()
#1  0x477f0c69 in QGraphicsView::paintEvent(QPaintEvent*) () from /usr/lib/libQtGui.so.4
#2  0x4716d263 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#3  0x47589ae6 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#4  0x4761d8a2 in QAbstractScrollArea::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4
#5  0x477f204c in QGraphicsView::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4
#6  0x47620066 in ?? () from /usr/lib/libQtGui.so.4
#7  0x45e2e596 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#8  0x471123e3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#9  0x4711788b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#10 0x45e2e3ee in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#11 0x47168b3b in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#12 0x47360587 in ?? () from /usr/lib/libQtGui.so.4
#13 0x4715e2eb in QWidgetPrivate::syncBackingStore() () from /usr/lib/libQtGui.so.4
#14 0x4716dcc7 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#15 0x475a72b4 in QMainWindow::event(QEvent*) () from /usr/lib/libQtGui.so.4
#16 0x47112414 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#17 0x4711788b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#18 0x45e2e3ee in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#19 0x45e32348 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#20 0x45e3267d in QCoreApplication::sendPostedEvents(QObject*, int) () from /usr/lib/libQtCore.so.4
#21 0x45e61015 in ?? () from /usr/lib/libQtCore.so.4
#22 0x4214aaff in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#23 0x4214b240 in ?? () from /lib/libglib-2.0.so.0
#24 0x4214b4ef in g_main_context_iteration () from /lib/libglib-2.0.so.0
#25 0x45e61418 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#26 0x471c70eb in ?? () from /usr/lib/libQtGui.so.4
#27 0x45e2cfde in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#28 0x45e2d289 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#29 0x45e3272b in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#30 0x47110245 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#31 0x0804f178 in ?? ()
#32 0x41ed96b3 in __libc_start_main () from /lib/libc.so.6
#33 0x0804f2e1 in ?? ()
Backtrace stopped: Not enough registers or memory available to unwind further

build failed on post-compile-test on mips/mipsel

In an attempt to build gammaray on mips/mipsel, build failed on testing:

< Running tests...
< /usr/bin/ctest --force-new-ctest-process -j6
< Test project /build/buildd2-gammaray_1.2.2-1-mips-r9OCsw/gammaray-1.2.2/obj-mips-linux-gnu
< Start 1: connectiontest-preload
< Start 2: connectiontest-style
< Start 3: connectiontest-gdb
< Start 4: attachtest-gdb
< 1/4 Test #1: connectiontest-preload ...........***Failed 2.43 sec
< Failed to launch injector preload
< Exit code: 1
< Error: Symbol is not marked as relocatable: qt_startup_hook
<
< 2/4 Test #2: connectiontest-style ............. Passed 6.98 sec
< 3/4 Test #3: connectiontest-gdb ............... Passed 13.83 sec
< 4/4 Test #4: attachtest-gdb ................... Passed 33.19 sec
<
< 75% tests passed, 1 tests failed out of 4
<
< Total Test time (real) = 33.30 sec
<
< The following tests FAILED:
< 1 - connectiontest-preload (Failed)

The full build logs are available from:
https://buildd.debian.org/status/fetch.php?pkg=gammaray&arch=mips&ver=1.2.2-1&stamp=1356200075
https://buildd.debian.org/status/fetch.php?pkg=gammaray&arch=mipsel&ver=1.2.2-1&stamp=1356200317

To be sure that the overwriting for qt_startup_hook will work,
test connectiontest-preload with readelf --relocs --wide checks if sybmbol
qt_startup_hook is marked as relocatable with JUMP_SLOT relocation, which
means that symbol will be resolved by dynamic linker and called at run
time through the plt.

The problem for Mips is that it has, besides the plt, another method of
calling functions from .so files, and this method doesn't need JUMP_SLOT
relocations (in fact, it doesn't need any relocations). This method uses .got
entries and lazy binding stubs. For example, if we call printf function, the
typical code is (gp register here points at the .got section):

lw t9, offset(gp) // load in t9 function pointer from the address gp + offset
jalr t9 // call the function in t9

Initially, the memory at gp + offset will contain the address of the lazy
binding stub for printf. Lazy binding stubs look like:

lw t9, 0(gp)
move t7,ra
li t8,7
jalr t9

First instruction loads in t9 the address of the function _dl_runtime_resolve
from the predefined place in .got (it is located in first .got entry).
_dl_runtime_resolve is dynamic linker's function which resolves calls to
functions from .so files (printf in this case). Second and third instructions
load registers t7 and t8 with arguments that _dl_runtime_resolve needs. The key
argument here is 7 - it is dynamic symbol table index of printf, so that dynamic
linker knows which function to search for. Last instruction calls
_dl_runtime_resolve. After _dl_runtime_resolve finds printf in some .so file, it
will overwrite the .got entry for printf with found printf address, so that next
calls to printf will not go through lazy binding stub, but directly call printf.

All this doesn't need any relocations (below will be explained why). There is a
method how it can be determined whether a call to function will go through .got
and lazy binding stub.

First, Mips ABI specifies that .got is divided in two parts - local and global.
Dynamic linker only resolves symbols from the global part of the .got (that is,
only symbols from global part of the .got have lazy binding stubs. Entries from
the local part of the .got are filled with final values during static linking).
Mips ABI also specifies that the order of symbols in global part of the .got
must match the order of symbols in dynamic symbol table. In the .dynamic section
(obtained with "readelf -d" command), there is a Mips-specific dynamic tag
DT_MIPS_GOTSYM which gives the dynamic symbol index of the first symbol that has
entry in global part of the .got. So, the symbol with dynamic symbol index of
DT_MIPS_GOTSYM will be placed in the first entry in the global part of the .got.
The symbol with dynamic symbol index of DT_MIPS_GOTSYM+1 will be placed in the
second entry in the global part of the .got and so on.

For the previous example, lets suppose that DT_MIPS_GOTSYM is 6. Since the
dynamic symbol index of printf is 7, printf will be placed in the global part of
the .got (in the second entry of the global part of the got), and call to printf
will go through .got and lazy binding stub, and will be resolved by dynamic
linker.

From the previous explanation, it should be clear why calling functions through
.got on Mips doesn't need any relocations. Dynamic linker knows which .got entry
corresponds to which symbol, based on matching between .got and dynamic symbol
table. For the plt, on the other hand, there is no matching between the .got.plt
entry and the dynamic symbol table - function addresses in .got.plt can come in
arbitrary order. This is why every .got.plt entry needs R_MIPS_JUMP_SLOT
relocation - so that dynamic linker knows which symbol corresponds to this entry.
(Note that on Mips, pointers to functions which are accessed though plt are
placed in separate .got.plt section, not in .got like on Intel for example.)

To summarize, the method to determine whether the call to function will go
through .got and lazy binding stub is:

  • find the value of dynamic symbol index of the function with the command
    "readelf --dyn-syms"
  • find the value of dynamic tag MIPS_GOTSYM with the command "readelf -d"
  • if (dyn_sym_index >= MIPS_GOTSYM) then the function has entry in the global
    part of the .got, and the call will go through lazy binding stub and be
    resolved by dynamic linker.

For the case that function is accessed through plt, the existing method that
searches for relocations should also be tried, with the exception that on Mips
the relocation to search for is R_MIPS_JUMP_SLOT.

Regards,
Dejan Latinović

Compilation error on linux

Missing unistd.h include in attach/processfiltermodel.cpp and injector/interactiveprocess.cpp leads to compilation error.

ObjectVisualizer does not work with VTK 6.0

Plugin linking fails, because VTK 6.0 does not have libQVTK.so. The library is called libvtkGUISupportQt.so instead.

Even when the linking error is fixed, GammaRay will crash when you try to open the Object Visualizer tab:

Thread 1 (Thread 0x7ffdc598a8c0 (LWP 20898)):
[KCrash Handler]
#6  0x00007ffd63926e5c in vtkRenderViewBase::vtkRenderViewBase (this=0x348fba0) at /usr/src/debug/VTK6.0.0/Views/Core/vtkRenderViewBase.cxx:33
#7  0x00007ffd60d575a9 in vtkRenderView::vtkRenderView (this=0x348fba0) at /usr/src/debug/VTK6.0.0/Views/Infovis/vtkRenderView.cxx:68
#8  0x00007ffd60d1faee in vtkGraphLayoutView::vtkGraphLayoutView (this=0x348fba0) at /usr/src/debug/VTK6.0.0/Views/Infovis/vtkGraphLayoutView.cxx:40
#9  0x00007ffd60d1fb7b in vtkGraphLayoutView::New () at /usr/src/debug/VTK6.0.0/Views/Infovis/vtkGraphLayoutView.cxx:38
#10 0x00007ffd729d6bcd in GammaRay::VtkWidget::setupGraph (this=0x337aa90) at /home/dvratil/projects/qt-projects/GammaRay/plugins/objectvisualizer/vtkwidget.cpp:142
#11 0x00007ffd729d68b1 in GammaRay::VtkWidget::VtkWidget (this=0x337aa90, parent=<optimized out>) at /home/dvratil/projects/qt-projects/GammaRay/plugins/objectvisualizer/vtkwidget.cpp:73
#12 0x00007ffd729d4c2a in GammaRay::GraphWidget::GraphWidget (this=0x342eae0, parent=<optimized out>) at /home/dvratil/projects/qt-projects/GammaRay/plugins/objectvisualizer/vtkcontainer.cpp:37
#13 0x00007ffd729d3c34 in GammaRay::GraphViewer::GraphViewer (this=0x3220910, probe=0x2fbbfc0, parent=<optimized out>) at /home/dvratil/projects/qt-projects/GammaRay/plugins/objectvisualizer/objectvisualizer.cpp:49

Right before the crash, following output is printed to console:

Generic Warning: In /builddir/build/BUILD/VTK6.0.0/Rendering/Core/vtkRenderer.cxx, line 47
Error: no override found for 'vtkRenderer'.

Generic Warning: In /builddir/build/BUILD/VTK6.0.0/Rendering/Core/vtkRenderWindow.cxx, line 35
Error: no override found for 'vtkRenderWindow'.

Can't attach to process on Archlinux

I'm trying to use GammaRay to debug my program but got the following error in the output:

QML debugging is enabled. Only use this in a safe environment.
gammaray_probe_inject()
Unable to receive probe settings, cannot attach to shared memory region "gammaray-11789" "/tmp/qipc_sharedmemory_gammaraybf7a476e31c6719face2851d5851f1587a54c4b5" , error is: "QSharedMemoryPrivate::initKey: unable to set key on lock"
Continueing anyway, with default settings.
Unable to receive probe settings, cannot attach to shared memory region "gammaray-11789" "/tmp/qipc_sharedmemory_gammaraybf7a476e31c6719face2851d5851f1587a54c4b5" , error is: "QSharedMemoryPrivate::initKey: unable to set key on lock"
Continueing anyway, with default settings.

The command used was

sudo gammaray -p 11789 --inprocess

The output of uname

Linux Aetf-Arch-Laptop 3.17.4-1-ARCH #1 SMP PREEMPT Fri Nov 21 21:14:42 CET 2014 x86_64 GNU/Linux

gvgraph.cpp.obj : error LNK2019: unresolved external symbol agclose referenced i n function "private: void __cdecl GammaRay::GVGraph::closeGraph(void)" (?closeGr aph@GVGraph@GammaRay@@AEAAXXZ)

Hi. I get these compilation errors on Windows 7 x64.
I had to do this because by default it was compiling in debug mode...
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=release ..
Then I executed nmake and the compilation went up to 81% and this is where I got these errors. What library am I missing here? Thanks for your help.

[ 80%] Generating ui_statemachineviewer.h
[ 80%] Building CXX object plugins/statemachineviewer/CMakeFiles/gammaray_statem
achineviewer_ui_plugin.dir/statemachineviewerwidget.cpp.obj
statemachineviewerwidget.cpp
[ 80%] Building CXX object plugins/statemachineviewer/CMakeFiles/gammaray_statem
achineviewer_ui_plugin.dir/gvgraph/gvgraph.cpp.obj
gvgraph.cpp
[ 81%] Building CXX object plugins/statemachineviewer/CMakeFiles/gammaray_statem
achineviewer_ui_plugin.dir/gvgraph/gvgraphitems.cpp.obj
gvgraphitems.cpp
[ 81%] Building CXX object plugins/statemachineviewer/CMakeFiles/gammaray_statem
achineviewer_ui_plugin.dir/gvgraph/gvutils.cpp.obj
gvutils.cpp
[ 81%] Building CXX object plugins/statemachineviewer/CMakeFiles/gammaray_statem
achineviewer_ui_plugin.dir/gammaray_statemachineviewer_ui_plugin_automoc.cpp.obj

gammaray_statemachineviewer_ui_plugin_automoc.cpp
Linking CXX shared module ..\2.1\qt4.8-MSVC-release-x86_64\gammaray_statemachine
viewer_ui_plugin.dll
Creating library gammaray_statemachineviewer_ui_plugin.lib and object gammara
y_statemachineviewer_ui_plugin.exp
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agclose referenced i
n function "private: void __cdecl GammaRay::GVGraph::closeGraph(void)" (?closeGr
aph@GVGraph@GammaRay@@AEAAXXZ)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol gvFreeLayout referen
ced in function "private: void __cdecl GammaRay::GVGraph::closeGraph(void)" (?cl
oseGraph@GVGraph@GammaRay@@AEAAXXZ)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agget referenced in
function "public: class QList<struct QPair<unsigned __int64,class GammaRay::GVNo
de> > __cdecl GammaRay::GVGraph::gvNodes(void)const " (?gvNodes@GVGraph@GammaRay
@@qeba?AV?$QList@U?$QPair@_KVGVNode@GammaRay@@@@@@xz)
gvutils.cpp.obj : error LNK2001: unresolved external symbol agget
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agnameof referenced
in function "public: class QList<struct QPair<unsigned __int64,class GammaRay::G
VSubGraph> > __cdecl GammaRay::GVGraph::gvSubGraphs(void)const " (?gvSubGraphs@G
VGraph@GammaRay@@qeba?AV?$QList@U?$QPair@_KVGVSubGraph@GammaRay@@@@@@xz)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol Agdirected reference
d in function "private: void __cdecl GammaRay::GVGraph::createGraph(void)" (?cre
ateGraph@GVGraph@GammaRay@@AEAAXXZ)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol AgDefaultDisc refere
nced in function "private: void __cdecl GammaRay::GVGraph::createGraph(void)" (?
createGraph@GVGraph@GammaRay@@AEAAXXZ)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agdelete referenced
in function "public: void __cdecl GammaRay::GVGraph::removeEdge(unsigned __int64
)" (?removeEdge@GVGraph@GammaRay@@QEAAX_K@Z)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol gvContext referenced
in function "public: __cdecl GammaRay::GVGraph::GVGraph(class QString const &)"
(??0GVGraph@GammaRay@@qeaa@AEBVQString@@@z)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agnxtedge referenced
in function "public: void __cdecl GammaRay::GVGraph::removeNode(unsigned __int6
4)" (?removeNode@GVGraph@GammaRay@@QEAAX_K@Z)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agfstedge referenced
in function "public: void __cdecl GammaRay::GVGraph::removeNode(unsigned __int6
4)" (?removeNode@GVGraph@GammaRay@@QEAAX_K@Z)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agnxtnode referenced
in function "public: void __cdecl GammaRay::GVGraph::removeGraph(unsigned __int
64)" (?removeGraph@GVGraph@GammaRay@@QEAAX_K@Z)
gvgraph.cpp.obj : error LNK2019: unresolved external symbol agfstnode referenced
in function "public: void __cdecl GammaRay::GVGraph::removeGraph(unsigned __int
64)" (?removeGraph@GVGraph@GammaRay@@QEAAX_K@Z)
gvutils.cpp.obj : error LNK2019: unresolved external symbol agopen referenced in
function "struct Agraph_s * __cdecl GammaRay::GVUtils::_agopen(class QString co
nst &,struct Agdesc_s,struct Agdisc_s *)" (?_agopen@GVUtils@GammaRay@@YAPEAUAgra
ph_s@@AEBVQString@@UAgdesc_s@@PEAUAgdisc_s@@@z)
gvutils.cpp.obj : error LNK2019: unresolved external symbol agattr referenced in
function "struct Agsym_s * __cdecl GammaRay::GVUtils::_agnodeattr(struct Agraph
_s *,class QString const &,class QString const &)" (?_agnodeattr@GVUtils@GammaRa
y@@YAPEAUAgsym_s@@PEAUAgraph_s@@AEBVQString@@1@Z)
gvutils.cpp.obj : error LNK2019: unresolved external symbol agnode referenced in
function "struct Agnode_s * __cdecl GammaRay::GVUtils::_agnode(struct Agraph_s
*,class QString const &,bool)" (?_agnode@GVUtils@GammaRay@@YAPEAUAgnode_s@@PEAUA
graph_s@@AEBVQString@@_N@Z)
gvutils.cpp.obj : error LNK2019: unresolved external symbol agedge referenced in
function "struct Agedge_s * __cdecl GammaRay::GVUtils::_agedge(struct Agraph_s
*,struct Agnode_s *,struct Agnode_s *,class QString const &,bool)" (?_agedge@GVU
tils@GammaRay@@YAPEAUAgedge_s@@PEAUAgraph_s@@PEAUAgnode_s@@1AEBVQString@@_N@Z)
gvutils.cpp.obj : error LNK2019: unresolved external symbol agsubg referenced in
function "struct Agraph_s * __cdecl GammaRay::GVUtils::_agsubg(struct Agraph_s
*,class QString const &,bool)" (?_agsubg@GVUtils@GammaRay@@YAPEAUAgraph_s@@PEAU3
@AEBVQString@@_N@Z)
gvutils.cpp.obj : error LNK2019: unresolved external symbol agsafeset referenced
in function "int __cdecl GammaRay::GVUtils::_agset(void *,class QString const &
,class QString const &)" (?_agset@GVUtils@GammaRay@@YAHPEAXAEBVQString@@1@Z)
gvutils.cpp.obj : error LNK2019: unresolved external symbol gvLayout referenced
in function "int __cdecl GammaRay::GVUtils::_gvLayout(struct GVC_s *,struct Agra
ph_s *,char const *)" (?_gvLayout@GVUtils@GammaRay@@YAHPEAUGVC_s@@PEAUAgraph_s@@
PEBD@Z)
..\2.1\qt4.8-MSVC-release-x86_64\gammaray_statemachineviewer_ui_plugin.dll : fat
al error LNK1120: 19 unresolved externals
LINK failed. with 1120
NMAKE : fatal error U1077: 'C:\Qt\CMake\bin\cmake.exe' : return code '0xffffffff
'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.

C:\Qt\GammaRay\build>

Can't compile under Windows when using GraphViz 2.36

This is probably the same or very similar to Issue 70, but I've been having this problem on Windows even using the latest codebase with the fix for Issue 70 in there.

I'm on Windows using the VS2010 compiler, Qt 5.2.1, and GraphViz 2.36, and I get the following errors when nmake reaches the gammaray_statemachineviewer_ui_plugin dependencies:


Scanning dependencies of target gammaray_statemachineviewer_ui_plugin
[ 81%] Building CXX object plugins/statemachineviewer/CMakeFiles/gammaray_statemachineviewer_ui_plugin.dir/gvgraph/gvutils.cpp.obj
gvutils.cpp
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\string.h(50) : error C2732: linkage specification contradicts earlier specification for 'memcmp'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\string.h(50) : see declaration of 'memcmp'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\string.h(111) : error C2732: linkage specification contradicts earlier specification for 'strcmp'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\string.h(111) : see declaration of 'strcmp'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\intrin.h(343) : error C2732: linkage specification contradicts earlier specification for 'memcmp'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\intrin.h(343) : see declaration of 'memcmp'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\intrin.h(389) : error C2732: linkage specification contradicts earlier specification for 'strcmp'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\intrin.h(389) : see declaration of 'strcmp'
NMAKE : fatal error U1077: 'c:\PROGRA2\MICROS2.0\VC\bin\cl.exe' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.


MacOSX Install Location (and Bundle)

The Install.txt claims that on MacOSX GammaRay should be installed as /Applications/GammaRay.app but when I build the current git master this does not happen and I'm not seeing anything in the CMakeLists.txt to configure this. I can run /usr/local/bin/gammaray fine but since this isn't a proper MacOSX bundle it's missing things such as the application icon and menubar entries.

Doesn't highlight preview when clicking on sublayouts

When going to widgets-> then clicking on nested layouts, the highlight remains on the top layout.

#include <QApplication>
#include <QDebug>
#include <QWidget>
#include <QColorDialog>

int main(int a, char**b)
{
    QApplication app(a, b);
    QColorDialog dialog;
    dialog.exec();
    return app.exec();
}

feature_summary() breakes Windows build

-- Building for: Visual Studio 12 2013
-- The C compiler identification is MSVC 18.0.30219.0

...

-- Found Qt4: D:/qt4/bin/qmake.exe (found suitable version "4.8.6", minimum required is "4.7.0")
Qt QTWEBKIT library not found.

....

-- The following REQUIRED packages have not been found:

 * Qt4 (required version >= 4.7.0) , <http://qt-project.org/>

CMake Error at C:/Program Files/CMake/share/cmake-3.0/Modules/FeatureSummary.cmake:537 (message):
  feature_summary() Error: REQUIRED package(s) are missing, aborting CMake
  run.
Call Stack (most recent call first):
  CMakeLists.txt:462 (feature_summary)

Optional C++11 support

It would be nice if GammaRay would build with compilers without C++11 support:

20>probe.cpp
25>proxytooluifactory.cpp
20>..\..\..\GammaRay\core\probe.cpp(99) : error C2143: syntax error : missing ')' before '['
20>..\..\..\GammaRay\core\probe.cpp(99) : error C2780: 'void GammaRay::Probe::executeSignalCallback(const Func &)' : expects 1 arguments - 0 provided
20>        p:\projects\gammaray\core\probe.h(116) : see declaration of 'GammaRay::Probe::executeSignalCallback'
20>..\..\..\GammaRay\core\probe.cpp(99) : error C2059: syntax error : '='
20>..\..\..\GammaRay\core\probe.cpp(99) : error C2143: syntax error : missing ';' before '{'
20>..\..\..\GammaRay\core\probe.cpp(103) : error C2059: syntax error : ')'
20>..\..\..\GammaRay\core\probe.cpp(108) : error C2143: syntax error : missing ')' before '['
20>..\..\..\GammaRay\core\probe.cpp(108) : error C2780: 'void GammaRay::Probe::executeSignalCallback(const Func &)' : expects 1 arguments - 0 provided
20>        p:\projects\gammaray\core\probe.h(116) : see declaration of 'GammaRay::Probe::executeSignalCallback'
20>..\..\..\GammaRay\core\probe.cpp(108) : error C2059: syntax error : '='
20>..\..\..\GammaRay\core\probe.cpp(108) : error C2143: syntax error : missing ';' before '{'
20>..\..\..\GammaRay\core\probe.cpp(112) : error C2059: syntax error : ')'
20>..\..\..\GammaRay\core\probe.cpp(117) : error C2143: syntax error : missing ')' before '['
20>..\..\..\GammaRay\core\probe.cpp(117) : error C2780: 'void GammaRay::Probe::executeSignalCallback(const Func &)' : expects 1 arguments - 0 provided
20>        p:\projects\gammaray\core\probe.h(116) : see declaration of 'GammaRay::Probe::executeSignalCallback'
20>..\..\..\GammaRay\core\probe.cpp(117) : error C2059: syntax error : '='
20>..\..\..\GammaRay\core\probe.cpp(117) : error C2143: syntax error : missing ';' before '{'
20>..\..\..\GammaRay\core\probe.cpp(121) : error C2059: syntax error : ')'
20>..\..\..\GammaRay\core\probe.cpp(126) : error C2143: syntax error : missing ')' before '['
20>..\..\..\GammaRay\core\probe.cpp(126) : error C2780: 'void GammaRay::Probe::executeSignalCallback(const Func &)' : expects 1 arguments - 0 provided
20>        p:\projects\gammaray\core\probe.h(116) : see declaration of 'GammaRay::Probe::executeSignalCallback'
20>..\..\..\GammaRay\core\probe.cpp(126) : error C2059: syntax error : '='
20>..\..\..\GammaRay\core\probe.cpp(126) : error C2143: syntax error : missing ';' before '{'
20>..\..\..\GammaRay\core\probe.cpp(130) : error C2059: syntax error : ')'
25>aboutdialog.cpp

Feature: Add a way to do massive semantic checks on qml files.

Add a way to execute a mass QQmlComponent::create() on all qml files, for a given qml context, to find errors in qml files.

    QDirIterator dirIt(QLatin1String("."), QDirIterator::Subdirectories);
    while (dirIt.hasNext()) {
        dirIt.next();
        if (QFileInfo(dirIt.filePath()).isFile()) {
            if (QFileInfo(dirIt.filePath()).suffix() == QLatin1String("qml")) 
{
                qDebug()<< dirIt.filePath();
                QQmlComponent component(qmlengine(), 
QUrl::fromLocalFile(dirIt.filePath()));
                QObject *myObject = component.create();
                if (!myObject) {
                    qWarning() << dirIt.filePath();
                    foreach (const QQmlError &error, component.errors()) {
                        qWarning() << error;
                    }
                }
            }
        }
    }

Crash when trying to view scenegraph

Ran an application (plasmashell) connected inprocess. I clicked on the scenegraph tab under "QuickScenes"

Happens ever time.

Thread 1 (Thread 0x7ff455fae800 (LWP 7139)):
[KCrash Handler]
#6  0x00007ff44c0a9d67 in raise () from /usr/lib/libc.so.6
#7  0x00007ff44c0ab118 in abort () from /usr/lib/libc.so.6
#8  0x00007ff44cceba83 in qt_message_fatal (context=..., message=...) at global/qlogging.cpp:1364
#9  0x00007ff44cce958c in QMessageLogger::fatal (this=0x7fffdf3bed40, msg=0x7ff44cff4fc0 "ASSERT failure in %s: \"%s\", file %s, line %d") at global/qlogging.cpp:669
#10 0x00007ff44cce3c33 in qt_assert_x (where=0x7ff44d03afb2 "QVector<T>::at", what=0x7ff44d03af9f "index out of range", file=0x7ff44d03af68 "../../include/QtCore/../../src/corelib/tools/qvector.h", line=377) at global/qglobal.cpp:2133
#11 0x00007ff44cdbef4b in QVector<int>::at (this=0x305f890, i=0) at ../../include/QtCore/../../src/corelib/tools/qvector.h:377
#12 0x00007ff44cee3047 in QSortFilterProxyModelPrivate::can_create_mapping (this=0x3061d10, source_parent=...) at itemmodels/qsortfilterproxymodel.cpp:423
#13 0x00007ff44cee70ed in QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeInserted (this=0x3061d10, source_parent=..., start=0, end=0) at itemmodels/qsortfilterproxymodel.cpp:1380
#14 0x00007ff44ceebc6d in QSortFilterProxyModel::qt_static_metacall (_o=0x3061710, _c=QMetaObject::InvokeMetaMethod, _id=11, _a=0x7fffdf3bef40) at .moc/moc_qsortfilterproxymodel.cpp:203
#15 0x00007ff44cf296e9 in QMetaMethod::invoke (this=0x7fffdf3bf400, object=0x3061710, connectionType=Qt::DirectConnection, returnValue=..., val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=..., val8=..., val9=...) at kernel/qmetaobject.cpp:2169
#16 0x00007ff44cf28bac in QMetaObject::invokeMethod (obj=0x3061710, member=0x7ff436fbae10 "_q_sourceRowsAboutToBeInserted", type=Qt::DirectConnection, ret=..., val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=..., val8=..., val9=...) at kernel/qmetaobject.cpp:1464
#17 0x00007ff436fb0fca in KRecursiveFilterProxyModelPrivate::sourceRowsAboutToBeInserted(QModelIndex const&, int, int) () from /opt/kde5/lib/libgammaray_ui-qt5.3-x86_64.so.2.2.0
#18 0x00007ff44cf5f82e in QMetaObject::activate (sender=0x218b8d0, signalOffset=3, local_signal_index=9, argv=0x7fffdf3bf740) at kernel/qobject.cpp:3680
#19 0x00007ff44cf5f03c in QMetaObject::activate (sender=0x218b8d0, m=0x7ff44d3ff720 QAbstractItemModel::staticMetaObject, local_signal_index=9, argv=0x7fffdf3bf740) at kernel/qobject.cpp:3546
#20 0x00007ff44cfee591 in QAbstractItemModel::rowsAboutToBeInserted (this=0x218b8d0, _t1=..., _t2=0, _t3=0) at .moc/moc_qabstractitemmodel.cpp:420
#21 0x00007ff44cec0d4f in QAbstractItemModel::beginInsertRows (this=0x218b8d0, parent=..., first=0, last=0) at itemmodels/qabstractitemmodel.cpp:2605
#22 0x00007ff42ab33022 in GammaRay::QuickSceneGraphModel::populateFromNode(QSGNode*) () from /opt/kde5/lib/gammaray/2.2/qt5.3-x86_64/gammaray_quickinspector.so
#23 0x00007ff42ab332b6 in GammaRay::QuickSceneGraphModel::populateFromNode(QSGNode*) () from /opt/kde5/lib/gammaray/2.2/qt5.3-x86_64/gammaray_quickinspector.so
#24 0x00007ff42ab33d40 in GammaRay::QuickSceneGraphModel::updateSGTree() () from /opt/kde5/lib/gammaray/2.2/qt5.3-x86_64/gammaray_quickinspector.so
#25 0x00007ff42ab34215 in GammaRay::QuickSceneGraphModel::setWindow(QQuickWindow*) () from /opt/kde5/lib/gammaray/2.2/qt5.3-x86_64/gammaray_quickinspector.so
#26 0x00007ff42ab1c37d in GammaRay::QuickInspector::selectWindow(QQuickWindow*) () from /opt/kde5/lib/gammaray/2.2/qt5.3-x86_64/gammaray_quickinspector.so
#27 0x00007ff42ab1c5e5 in GammaRay::QuickInspector::selectWindow(int) () from /opt/kde5/lib/gammaray/2.2/qt5.3-x86_64/gammaray_quickinspector.so
#28 0x00007ff42ab39ea4 in GammaRay::QuickInspector::qt_static_metacall(QObject_, QMetaObject::Call, int, void_*) () from /opt/kde5/lib/gammaray/2.2/qt5.3-x86_64/gammaray_quickinspector.so
#29 0x00007ff44cf5f82e in QMetaObject::activate (sender=0x3021f60, signalOffset=7, local_signal_index=5, argv=0x7fffdf3bfc90) at kernel/qobject.cpp:3680
#30 0x00007ff44cf5f03c in QMetaObject::activate (sender=0x3021f60, m=0x7ff44e5c23c0 QComboBox::staticMetaObject, local_signal_index=5, argv=0x7fffdf3bfc90) at kernel/qobject.cpp:3546
#31 0x00007ff44deef164 in QComboBox::currentIndexChanged (this=0x3021f60, _t1=4) at .moc/moc_qcombobox.cpp:475
#32 0x00007ff44dee813a in QComboBoxPrivate::_q_emitCurrentIndexChanged (this=0x3021fa0, index=...) at widgets/qcombobox.cpp:1265
#33 0x00007ff44deea52d in QComboBoxPrivate::setCurrentIndex (this=0x3021fa0, mi=...) at widgets/qcombobox.cpp:2065
#34 0x00007ff44dee7f55 in QComboBoxPrivate::_q_itemSelected (this=0x3021fa0, item=...) at widgets/qcombobox.cpp:1234
#35 0x00007ff44deee6e0 in QComboBox::qt_static_metacall (_o=0x3021f60, _c=QMetaObject::InvokeMetaMethod, _id=13, _a=0x7fffdf3c0030) at .moc/moc_qcombobox.cpp:270
#36 0x00007ff44cf5f82e in QMetaObject::activate (sender=0x32f4b50, signalOffset=7, local_signal_index=0, argv=0x7fffdf3c0030) at kernel/qobject.cpp:3680
#37 0x00007ff44cf5f03c in QMetaObject::activate (sender=0x32f4b50, m=0x7ff44e5dbc20 QComboBoxPrivateContainer::staticMetaObject, local_signal_index=0, argv=0x7fffdf3c0030) at kernel/qobject.cpp:3546
#38 0x00007ff44e1e069b in QComboBoxPrivateContainer::itemSelected (this=0x32f4b50, _t1=...) at .moc/moc_qcombobox_p.cpp:323
#39 0x00007ff44dee657d in QComboBoxPrivateContainer::eventFilter (this=0x32f4b50, o=0x32ec3f0, e=0x7fffdf3c0bf0) at widgets/qcombobox.cpp:683
#40 0x00007ff44cf1d947 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x19c0a90, receiver=0x32ec3f0, event=0x7fffdf3c0bf0) at kernel/qcoreapplication.cpp:1031
#41 0x00007ff44dd80bfb in QApplicationPrivate::notify_helper (this=0x19c0a90, receiver=0x32ec3f0, e=0x7fffdf3c0bf0) at kernel/qapplication.cpp:3497
#42 0x00007ff44dd7eb5f in QApplication::notify (this=0x7fffdf3c1e00, receiver=0x32ec3f0, e=0x7fffdf3c0bf0) at kernel/qapplication.cpp:3068
#43 0x00007ff44cf1d5d6 in QCoreApplication::notifyInternal (this=0x7fffdf3c1e00, receiver=0x32ec3f0, event=0x7fffdf3c0bf0) at kernel/qcoreapplication.cpp:935
#44 0x00007ff44dd82e73 in QCoreApplication::sendSpontaneousEvent (receiver=0x32ec3f0, event=0x7fffdf3c0bf0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:240
#45 0x00007ff44dd7d4ab in QApplicationPrivate::sendMouseEvent (receiver=0x32ec3f0, event=0x7fffdf3c0bf0, alienWidget=0x32ec3f0, nativeWidget=0x32f4b50, buttonDown=0x7ff44e5ea0b0 <qt_button_down>, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:2541
#46 0x00007ff44ddf69bf in QWidgetWindow::handleMouseEvent (this=0x3022240, event=0x7fffdf3c1720) at kernel/qwidgetwindow.cpp:411
#47 0x00007ff44ddf5fe1 in QWidgetWindow::event (this=0x3022240, event=0x7fffdf3c1720) at kernel/qwidgetwindow.cpp:179
#48 0x00007ff44dd80c24 in QApplicationPrivate::notify_helper (this=0x19c0a90, receiver=0x3022240, e=0x7fffdf3c1720) at kernel/qapplication.cpp:3501
#49 0x00007ff44dd7e3b6 in QApplication::notify (this=0x7fffdf3c1e00, receiver=0x3022240, e=0x7fffdf3c1720) at kernel/qapplication.cpp:2954
#50 0x00007ff44cf1d5d6 in QCoreApplication::notifyInternal (this=0x7fffdf3c1e00, receiver=0x3022240, event=0x7fffdf3c1720) at kernel/qcoreapplication.cpp:935
#51 0x00007ff44d501b39 in QCoreApplication::sendSpontaneousEvent (receiver=0x3022240, event=0x7fffdf3c1720) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:240
#52 0x00007ff44d4fb344 in QGuiApplicationPrivate::processMouseEvent (e=0x5c21900) at kernel/qguiapplication.cpp:1711
#53 0x00007ff44d4fa988 in QGuiApplicationPrivate::processWindowSystemEvent (e=0x5c21900) at kernel/qguiapplication.cpp:1512
#54 0x00007ff44d4e4d95 in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at kernel/qwindowsysteminterface.cpp:579
#55 0x00007ff43f4fabce in userEventSourceDispatch (source=0x1a02460) at eventdispatchers/qeventdispatcher_glib.cpp:78
#56 0x00007ff44763cb84 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#57 0x00007ff44763cdc8 in ?? () from /usr/lib/libglib-2.0.so.0
#58 0x00007ff44763ce6c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#59 0x00007ff44cf94e77 in QEventDispatcherGlib::processEvents (this=0x1a00a30, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#60 0x00007ff43f4fade0 in QPAEventDispatcherGlib::processEvents (this=0x1a00a30, flags=...) at eventdispatchers/qeventdispatcher_glib.cpp:123
#61 0x00007ff44cf1a28c in QEventLoop::processEvents (this=0x7fffdf3c1cc0, flags=...) at kernel/qeventloop.cpp:136
#62 0x00007ff44cf1a56f in QEventLoop::exec (this=0x7fffdf3c1cc0, flags=...) at kernel/qeventloop.cpp:212
#63 0x00007ff44cf1dcbf in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
#64 0x00007ff44d4fa734 in QGuiApplication::exec () at kernel/qguiapplication.cpp:1446
#65 0x00007ff44dd7dbe3 in QApplication::exec () at kernel/qapplication.cpp:2746
#66 0x000000000045edf5 in main ()

gammaray targeted process is grayed out

I was able to compile gammaray however launching gammaray with the command line throws this error.
No probe found for ABI qt4.8-MSVC-release-i686

Also using the gammaray launcher the process list is grayed out

segfault while trying to attach to running process

Trying to attach to a running process (New empty GUI template project of QtCreator) using the dialog of GammaRay (GammaRay is running with sudo as root).
The process is found, here is the gammaray output when stopping:
Remarks:

  • my "untrusted .gdbinit" adds qt source navigation to QtCreator
  • /var/tmp/kdecache-christian owner error is due to running as root
  • System: Kubuntu 12.10 64bit

Error: "/var/tmp/kdecache-christian" is owned by uid 1000 instead of uid 0.
QProcess: Destroyed while process is still running.
*** glibc detected *** gdb: double free or corruption (!prev): 0x00000000018ff3a0 ***

warning: not using untrusted file "/home/christian/.gdbinit"
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7fbcba91ab96]
/lib/x86_64-linux-gnu/libc.so.6(fclose+0x155)[0x7fbcba90a815]
gdb[0x6c42e3]
gdb[0x5583b0]
gdb(do_cleanups+0x1d)[0x55841d]
gdb[0x4d0d05]
gdb(source_script+0x25)[0x4d0d70]
gdb(catch_command_errors+0x50)[0x5c9cd7]
gdb[0x5cc6e2]
gdb(catch_errors+0x5f)[0x5c9c03]
gdb(gdb_main+0x34)[0x5ccc5c]
gdb(main+0x4e)[0x44e5aa]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7fbcba8bd76d]
gdb[0x44e479]
======= Memory map: ========
00400000-009e3000 r-xp 00000000 08:05 4541 /usr/bin/gdb
00be2000-00be3000 r--p 005e2000 08:05 4541 /usr/bin/gdb
00be3000-00bf7000 rw-p 005e3000 08:05 4541 /usr/bin/gdb
00bf7000-00c17000 rw-p 00000000 00:00 0
01769000-01933000 rw-p 00000000 00:00 0 [heap]
7fbcba03d000-7fbcba483000 r--p 00000000 08:05 341 /usr/lib/locale/locale-archive
7fbcba483000-7fbcba498000 r-xp 00000000 08:05 261754 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbcba498000-7fbcba697000 ---p 00015000 08:05 261754 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbcba697000-7fbcba698000 r--p 00014000 08:05 261754 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbcba698000-7fbcba699000 rw-p 00015000 08:05 261754 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbcba699000-7fbcba69b000 r-xp 00000000 08:05 272949 /lib/x86_64-linux-gnu/libutil-2.15.so
7fbcba69b000-7fbcba89a000 ---p 00002000 08:05 272949 /lib/x86_64-linux-gnu/libutil-2.15.so
7fbcba89a000-7fbcba89b000 r--p 00001000 08:05 272949 /lib/x86_64-linux-gnu/libutil-2.15.so
7fbcba89b000-7fbcba89c000 rw-p 00002000 08:05 272949 /lib/x86_64-linux-gnu/libutil-2.15.so
7fbcba89c000-7fbcbaa51000 r-xp 00000000 08:05 270328 /lib/x86_64-linux-gnu/libc-2.15.so
7fbcbaa51000-7fbcbac50000 ---p 001b5000 08:05 270328 /lib/x86_64-linux-gnu/libc-2.15.so
7fbcbac50000-7fbcbac54000 r--p 001b4000 08:05 270328 /lib/x86_64-linux-gnu/libc-2.15.so
7fbcbac54000-7fbcbac56000 rw-p 001b8000 08:05 270328 /lib/x86_64-linux-gnu/libc-2.15.so
7fbcbac56000-7fbcbac5b000 rw-p 00000000 00:00 0
7fbcbac5b000-7fbcbac81000 r-xp 00000000 08:05 262372 /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbcbac81000-7fbcbae81000 ---p 00026000 08:05 262372 /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbcbae81000-7fbcbae83000 r--p 00026000 08:05 262372 /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbcbae83000-7fbcbae84000 rw-p 00028000 08:05 262372 /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbcbae84000-7fbcbb106000 r-xp 00000000 08:05 4957 /usr/lib/libpython2.7.so.1.0
7fbcbb106000-7fbcbb305000 ---p 00282000 08:05 4957 /usr/lib/libpython2.7.so.1.0
7fbcbb305000-7fbcbb307000 r--p 00281000 08:05 4957 /usr/lib/libpython2.7.so.1.0
7fbcbb307000-7fbcbb370000 rw-p 00283000 08:05 4957 /usr/lib/libpython2.7.so.1.0
7fbcbb370000-7fbcbb382000 rw-p 00000000 00:00 0
7fbcbb382000-7fbcbb39a000 r-xp 00000000 08:05 270330 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fbcbb39a000-7fbcbb599000 ---p 00018000 08:05 270330 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fbcbb599000-7fbcbb59a000 r--p 00017000 08:05 270330 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fbcbb59a000-7fbcbb59b000 rw-p 00018000 08:05 270330 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fbcbb59b000-7fbcbb59f000 rw-p 00000000 00:00 0
7fbcbb59f000-7fbcbb69a000 r-xp 00000000 08:05 270508 /lib/x86_64-linux-gnu/libm-2.15.so
7fbcbb69a000-7fbcbb899000 ---p 000fb000 08:05 270508 /lib/x86_64-linux-gnu/libm-2.15.so
7fbcbb899000-7fbcbb89a000 r--p 000fa000 08:05 270508 /lib/x86_64-linux-gnu/libm-2.15.so
7fbcbb89a000-7fbcbb89b000 rw-p 000fb000 08:05 270508 /lib/x86_64-linux-gnu/libm-2.15.so
7fbcbb89b000-7fbcbb8b1000 r-xp 00000000 08:05 266006 /lib/x86_64-linux-gnu/libz.so.1.2.7
7fbcbb8b1000-7fbcbbab0000 ---p 00016000 08:05 266006 /lib/x86_64-linux-gnu/libz.so.1.2.7
7fbcbbab0000-7fbcbbab1000 r--p 00015000 08:05 266006 /lib/x86_64-linux-gnu/libz.so.1.2.7
7fbcbbab1000-7fbcbbab2000 rw-p 00016000 08:05 266006 /lib/x86_64-linux-gnu/libz.so.1.2.7
7fbcbbab2000-7fbcbbad6000 r-xp 00000000 08:05 266426 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbcbbad6000-7fbcbbcd5000 ---p 00024000 08:05 266426 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbcbbcd5000-7fbcbbcd9000 r--p 00023000 08:05 266426 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbcbbcd9000-7fbcbbcda000 rw-p 00027000 08:05 266426 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbcbbcda000-7fbcbbcfa000 r-xp 00000000 08:05 261689 /lib/x86_64-linux-gnu/libncurses.so.5.9
7fbcbbcfa000-7fbcbbef9000 ---p 00020000 08:05 261689 /lib/x86_64-linux-gnu/libncurses.so.5.9
7fbcbbef9000-7fbcbbefa000 r--p 0001f000 08:05 261689 /lib/x86_64-linux-gnu/libncurses.so.5.9
7fbcbbefa000-7fbcbbefb000 rw-p 00020000 08:05 261689 /lib/x86_64-linux-gnu/libncurses.so.5.9
7fbcbbefb000-7fbcbbefd000 r-xp 00000000 08:05 262299 /lib/x86_64-linux-gnu/libdl-2.15.so
7fbcbbefd000-7fbcbc0fd000 ---p 00002000 08:05 262299 /lib/x86_64-linux-gnu/libdl-2.15.so
7fbcbc0fd000-7fbcbc0fe000 r--p 00002000 08:05 262299 /lib/x86_64-linux-gnu/libdl-2.15.so
7fbcbc0fe000-7fbcbc0ff000 rw-p 00003000 08:05 262299 /lib/x86_64-linux-gnu/libdl-2.15.so
7fbcbc0ff000-7fbcbc138000 r-xp 00000000 08:05 268396 /lib/x86_64-linux-gnu/libreadline.so.6.2
7fbcbc138000-7fbcbc338000 ---p 00039000 08:05 268396 /lib/x86_64-linux-gnu/libreadline.so.6.2
7fbcbc338000-7fbcbc33a000 r--p 00039000 08:05 268396 /lib/x86_64-linux-gnu/libreadline.so.6.2
7fbcbc33a000-7fbcbc340000 rw-p 0003b000 08:05 268396 /lib/x86_64-linux-gnu/libreadline.so.6.2
7fbcbc340000-7fbcbc341000 rw-p 00000000 00:00 0
7fbcbc341000-7fbcbc363000 r-xp 00000000 08:05 272947 /lib/x86_64-linux-gnu/ld-2.15.so
7fbcbc38e000-7fbcbc413000 rw-p 00000000 00:00 0
7fbcbc413000-7fbcbc438000 r--p 00000000 08:05 420747 /usr/share/locale-langpack/de/LC_MESSAGES/libc.mo
7fbcbc438000-7fbcbc4aa000 rw-p 00000000 00:00 0
7fbcbc4ab000-7fbcbc534000 rw-p 00000000 00:00 0
7fbcbc54e000-7fbcbc555000 r--s 00000000 08:05 273800 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7fbcbc555000-7fbcbc561000 r--p 00000000 08:05 395637 /usr/share/locale-langpack/de/LC_MESSAGES/gdb.mo
7fbcbc561000-7fbcbc563000 rw-p 00000000 00:00 0
7fbcbc563000-7fbcbc564000 r--p 00022000 08:05 272947 /lib/x86_64-linux-gnu/ld-2.15.so
7fbcbc564000-7fbcbc566000 rw-p 00023000 08:05 272947 /lib/x86_64-linux-gnu/ld-2.15.so
7fffc6265000-7fffc6286000 rw-p 00000000 00:00 0 [stack]
7fffc636a000-7fffc636b000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Unable to attach injector gdb
Exit code: 0
Error: Process crashed

Separate core from GUI

Hi. It would be nice to see a basic functionality in a standalone library, which could be used in other applications.
Also it would help to make the design of the program more clear.

Compile error with GraphViz 2.36.0

I get an error when I try to compile GammaRay (same with 2.0.0, 2.0 and master).
This seems to be related with GraphViz. I have version 2.36.0 installed.
With GraphViz 2.34.0, it works.

[ 79%] Building CXX object plugins/statemachineviewer/CMakeFiles/gammaray_statemachineviewer_ui_plugin.dir/gvgraph/gvutils.cpp.o
In file included from /usr/include/graphviz/cgraph.h:17:0,
                 from /usr/include/graphviz/types.h:40,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.h:25,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.cpp:24:
/usr/include/graphviz/cdt.h:27:12: error: previous declaration of 'int memcmp(const void*, const void*, size_t)' with 'C++' linkage
 extern int  memcmp _ARG_((const Void_t*, const Void_t*, size_t));
            ^
In file included from /usr/include/qt/QtCore/qarraydata.h:46:0,
                 from /usr/include/qt/QtCore/qbytearray.h:47,
                 from /usr/include/qt/QtCore/qstring.h:46,
                 from /usr/include/qt/QtCore/QString:1,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.h:27,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.cpp:24:
/usr/include/string.h:70:77: error: conflicts with new declaration with 'C' linkage
      __THROW __attribute_pure__ __nonnull ((1, 2));
                                                                             ^
In file included from /usr/include/graphviz/cgraph.h:17:0,
                 from /usr/include/graphviz/types.h:40,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.h:25,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.cpp:24:
/usr/include/graphviz/cdt.h:28:12: error: previous declaration of 'int strcmp(const char*, const char*)' with 'C++' linkage
 extern int  strcmp _ARG_((const char*, const char*));
            ^
In file included from /usr/include/qt/QtCore/qarraydata.h:46:0,
                 from /usr/include/qt/QtCore/qbytearray.h:47,
                 from /usr/include/qt/QtCore/qstring.h:46,
                 from /usr/include/qt/QtCore/QString:1,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.h:27,
                 from /home/cbuehler/gammaray/src/GammaRay/plugins/statemachineviewer/gvgraph/gvutils.cpp:24:
/usr/include/string.h:145:77: error: conflicts with new declaration with 'C' linkage
      __THROW __attribute_pure__ __nonnull ((1, 2));
                                                                             ^
plugins/statemachineviewer/CMakeFiles/gammaray_statemachineviewer_ui_plugin.dir/build.make:200: recipe for target 'plugins/statemachineviewer/CMakeFiles/gammaray_statemachineviewer_ui_plugin.dir/gvgraph/gvutils.cpp.o' failed
make[2]: *** [plugins/statemachineviewer/CMakeFiles/gammaray_statemachineviewer_ui_plugin.dir/gvgraph/gvutils.cpp.o] Error 1
CMakeFiles/Makefile2:2798: recipe for target 'plugins/statemachineviewer/CMakeFiles/gammaray_statemachineviewer_ui_plugin.dir/all' failed
make[1]: *** [plugins/statemachineviewer/CMakeFiles/gammaray_statemachineviewer_ui_plugin.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
make: *** [all] Error 2

Crash in GammaRay::ObjectTypeFilterProxyModel<QItemSelectionModel>::filterAcceptsObject()

Crashed when debugging tomahawk (which uses a lot of threads)

BT when selection the Selection Models browser:
#0 0x00000004000000d4 in ?? ()
#1 0x00007ffff56a32a0 in QMetaObject::cast (this=0x7ffff6e81b40 QItemSelectionModel::staticMetaObject, obj=

0x1237900) at /home/krf/devel/src/qt/src/corelib/kernel/qmetaobject.cpp:274

#2 0x00007ffff446c864 in qobject_cast<QItemSelectionModel*> (object=0x1237900)

at /home/krf/devel/build/qt4.8-shared-debug/include/QtCore/../../../../src/qt/src/corelib/kernel/qobject.h:380

#3 0x00007ffff446ca66 in GammaRay::ObjectTypeFilterProxyModel::filterAcceptsObject (

this=0x17ad770, object=0x1237900) at /home/krf/devel/src/kdab/GammaRay/include/objecttypefilterproxymodel.h:109

#4 0x00007ffff446b71c in GammaRay::ObjectFilterProxyModelBase::filterAcceptsRow (this=0x17ad770, source_row=2216,

source_parent=...) at /home/krf/devel/src/kdab/GammaRay/include/objecttypefilterproxymodel.h:75

#5 0x00007ffff67eca3b in QSortFilterProxyModelPrivate::create_mapping (this=0x36edeb0, source_parent=...)

at /home/krf/devel/src/qt/src/gui/itemviews/qsortfilterproxymodel.cpp:327

#6 0x00007ffff67f1e70 in QSortFilterProxyModel::index (this=0x17ad770, row=0, column=0, parent=...)

at /home/krf/devel/src/qt/src/gui/itemviews/qsortfilterproxymodel.cpp:1659

#7 0x00007ffff6743940 in QAbstractItemView::setModel (this=0x36aed90, model=0x17ad770)

at /home/krf/devel/src/qt/src/gui/itemviews/qabstractitemview.cpp:664

#8 0x00007ffff6758c88 in QHeaderView::setModel (this=0x36aed90, model=0x17ad770)

at /home/krf/devel/src/qt/src/gui/itemviews/qheaderview.cpp:410

#9 0x00007ffff67942b5 in QTreeView::setModel (this=0x36cfdf0, model=0x17ad770)

at /home/krf/devel/src/qt/src/gui/itemviews/qtreeview.cpp:236

#10 0x00007ffff446be7b in GammaRay::SelectionModelInspector::SelectionModelInspector (this=0x36d6a50, probe=0x12ccdc0,

widget=0x1752490)
at /home/krf/devel/src/kdab/GammaRay/core/tools/selectionmodelinspector/selectionmodelinspector.cpp:40

#11 0x00007ffff442ea29 in GammaRay::StandardToolFactory<QItemSelectionModel, GammaRay::SelectionModelInspector>::createWidget (this=0x128d360, probe=0x12ccdc0, parentWidget=0x1752490)

at /home/krf/devel/src/kdab/GammaRay/include/toolfactory.h:117

#12 0x00007ffff43f5202 in GammaRay::MainWindow::toolSelected (this=0x1752490)

at /home/krf/devel/src/kdab/GammaRay/core/mainwindow.cpp:266

Probably related to thread-safety issues amongst our models

segfault on dialog "cancel" after calling QSpinBox.setValue() from GammaRay

Seen with 1.1.0, built on a Debian testing upgraded today before building gammaray.

The app to look at though gammaray is https://alioth.debian.org/projects/omaha/, at commit
http://anonscm.debian.org/gitweb/?p=omaha/omaha.git;a=commit;h=30ef5e94c98ccd18ccd2eae9dd5cbd2d420d053b

To reproduce:

  • launch ./scripts/omaha --toolkit Qt4
  • attach gammaray
  • select "Checkers", and menu Main/Play

From gammaray:

  • browse widgets until finding the "Board Size" QSpinBox in the QDialog
  • call setValue(10) on it

Hit cancel in the dialog:
=> omaha terminates with "Segmentation fault"

Gammaray cannot attach if python is run under gdb, and a corefile does not get properly decoded by gdb. Any hint to get more precise info ?

Command line options to disable vtk and graphviz support

Could you please add command line options to disable vtk and/or graphviz support? On a x86_64 environment without 32bit version of those libraries installed, the cmake module sometimes find the the 64bit version and then fail in the linking stage.

I'm not 100% sure if it is impossible to workaround it without the option but having one seems useful anyway.

GammaRay 1.3.2 on Fedora 17

I followed the installation steps:

  • mkdir build
  • cd build
  • cmake ..
  • make
  • sudo make install

if I launch the application by the command gammaray occours the following error:
"gammaray: error while loading shared libraries: libgammaray_ui.so: cannot open shared object file: No such file or directory"

The application runs if I launch it from the folder:
/myDir/Gammaray-master/build/bin using the command ./gammaray

In any case when I attach any Qt process by GammaRay crash both!

Multiple linker errors while building (Qt 5.4 MSVC 2013)

Please help, I'm getting the following errors while building:

qtmain.lib(qtmain_win.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in main.cpp.obj

msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __cdecl type_info::type_info(class type_info const &)" (??0type_info@@AEAA@AEBV0@@Z) already defined in LIBCMT.lib(typinfo.obj)

msvcrt.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __cdecl type_info::operator=(class type_info const &)" (??4type_info@@AEAAAEAV0@AEBV0@@Z) already defined in LIBCMT.lib(typinfo.obj)

msvcrt.lib(MSVCR120.dll) : error LNK2005: memmove already defined in LIBCMT.lib(memcpy.obj)

msvcrt.lib(MSVCR120.dll) : error LNK2005: _hypot already defined in LIBCMT.lib(hypot.obj)

msvcprt.lib(MSVCP120.dll) : error LNK2005: "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ) already defined in libcpmt.lib(xthrow.obj)

msvcprt.lib(MSVCP120.dll) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPEBD@Z) already defined in libcpmt.lib(xthrow.obj)

msvcprt.lib(MSVCP120.dll) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPEBD@Z) already defined in libcpmt.lib(xthrow.obj)

msvcprt.lib(MSVCP120.dll) : error LNK2005: "char const * __cdecl std::_Syserror_map(int)" (?_Syserror_map@std@@YAPEBDH@Z) already defined in libcpmt.lib(syserror.obj)

msvcprt.lib(MSVCP120.dll) : error LNK2005: "char const * __cdecl std::_Winerror_map(int)" (?_Winerror_map@std@@YAPEBDH@Z) already defined in libcpmt.lib(syserror.obj)

LIBCMT.lib(crt0init.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

..\..\bin\gammaray-launcher.exe : fatal error LNK1169: one or more multiply defined symbols found

LINK failed. with 1169
jom: G:\GammaRay-master\launcher\ui\CMakeFiles\gammaray-launcher.dir\build.make [bin\gammaray-launcher.exe] Error 2
jom: G:\GammaRay-master\CMakeFiles\Makefile2 [launcher\ui\CMakeFiles\gammaray-launcher.dir\all] Error 2
jom: G:\GammaRay-master\Makefile [all] Error 2
11:14:24: The process "C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe" exited with code 2.
Error while building/deploying project GammaRay (kit: Desktop Qt 5.4.0 MSVC2013 64bit)

Crash when deleting QQuickItem after runtime attaching

I have no reduced testcase yet, but the backtrace below might be helpful. Reproducible 100% of the time.

QFatal in ■■■■■■■ (/home/thomas/install/opt/■■■■■■■■■/■■■■■■■■■)
START BACKTRACE:
1       /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0xf179b) [0x7f9edb3f379b]
2       /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0xf18ba) [0x7f9edb3f38ba]
3       /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0xd3d2e) [0x7f9edb3d5d2e]
4       /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(+0xa89dd) [0x7f9ef93279dd]
5       /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(+0xa540d) [0x7f9ef932440d]
6       /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QMessageLogger::fatal(char const*, ...) const+0xc1) [0x7f9ef93255bd]
7       /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(qt_assert_x(char const*, char const*, char const*, int)+0) [0x7f9ef931fc10]
8       /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0x93869) [0x7f9edb395869]
9       /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0x93929) [0x7f9edb395929]
10      /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0x93f88) [0x7f9edb395f88]
11      /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0xf32de) [0x7f9edb3f52de]
12      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QMetaObject::activate(QObject*, int, int, void**)+0x716) [0x7f9ef959c030]
13      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QMetaObject::activate(QObject*, QMetaObject const*, int, void**)+0x38) [0x7f9ef959b83e]
14      /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(GammaRay::Probe::objectReparented(QObject*)+0x47) [0x7f9edb3f598b]
15      /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(GammaRay::Probe::objectParentChanged()+0x40) [0x7f9edb384dac]
16      /home/thomas/install/lib/libgammaray_core-qt5.3-x86_64.so.2.3.0(+0xf3555) [0x7f9edb3f5555]
17      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QMetaObject::activate(QObject*, int, int, void**)+0x716) [0x7f9ef959c030]
18      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QMetaObject::activate(QObject*, QMetaObject const*, int, void**)+0x38) [0x7f9ef959b83e]
19      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickItem::parentChanged(QQuickItem*)+0x47) [0x7f9efafb8c5b]
20      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickItem::setParentItem(QQuickItem*)+0x729) [0x7f9efafa8467]
21      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickItem::~QQuickItem()+0x11f) [0x7f9efafa6e77]
22      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickImplicitSizeItem::~QQuickImplicitSizeItem()+0x40) [0x7f9efafff7de]
23      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickBasePositioner::~QQuickBasePositioner()+0x16f) [0x7f9efb095269]
24      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickColumn::~QQuickColumn()+0x40) [0x7f9efaffd3aa]
25      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(+0x2544bd) [0x7f9efb0164bd]
26      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(+0x2544f6) [0x7f9efb0164f6]
27      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QObjectPrivate::deleteChildren()+0xbe) [0x7f9ef9596b82]
28      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QObject::~QObject()+0x672) [0x7f9ef9595278]
29      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickItem::~QQuickItem()+0x43f) [0x7f9efafa7197]
30      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickRectangle::~QQuickRectangle()+0x40) [0x7f9efaffea2c]
31      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(+0x253749) [0x7f9efb015749]
32      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(+0x253782) [0x7f9efb015782]
33      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(qDeleteInEventHandler(QObject*)+0x2a) [0x7f9ef959daca]
34      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QObject::event(QEvent*)+0xbe) [0x7f9ef95955aa]
35      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Quick.so.5(QQuickItem::event(QEvent*)+0x3a3) [0x7f9efafb538d]
36      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QCoreApplicationPrivate::notify_helper(QObject*, QEvent*)+0x76) [0x7f9ef9559df0]
37      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QCoreApplication::notify(QObject*, QEvent*)+0xc2) [0x7f9ef9559ab2]
38      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Gui.so.5(QGuiApplication::notify(QObject*, QEvent*)+0xd6) [0x7f9ef9b4caf2]
39      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QCoreApplication::notifyInternal(QObject*, QEvent*)+0x9a) [0x7f9ef95599ba]
40      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QCoreApplication::sendEvent(QObject*, QEvent*)+0x51) [0x7f9ef955d6f3]
41      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)+0x439) [0x7f9ef955ad17]
42      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QCoreApplication::sendPostedEvents(QObject*, int)+0x32) [0x7f9ef955a6c8]
43      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(+0x351fa0) [0x7f9ef95d0fa0]
44      /usr/lib64/libglib-2.0.so.0(g_main_context_dispatch+0x146) [0x7f9ef6f17316]
45      /usr/lib64/libglib-2.0.so.0(+0x4b668) [0x7f9ef6f17668]
46      /usr/lib64/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7f9ef6f1770c]
47      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0xdb) [0x7f9ef95d1741]
48      /home/thomas/install/opt/qt-desktop-opengles-53/plugins/platforms/libqxcb.so(+0x7400a) [0x7f9ef20f800a]
49      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x6c) [0x7f9ef9556666]
50      /home/thomas/install/opt/qt-desktop-opengles-53/lib/libQt5Core.so.5(QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)+0x169) [0x7f9ef9556949]
END BACKTRACE
■■■■■■■■■: ASSERT: "!obj->parent() || Probe::instance()->isValidObject(parentObject(obj))" in file /home/thomas/src/GammaRay/core/objecttreemodel.cpp, line 69        

Doesn't find Graphviz on archlinux

Please test the FindGraphviz.cmake with a recent version of graphviz.

I have graphviz 2.34.0 on my system

One bug is probably here:
find_path(GRAPHVIZ_INCLUDE_DIR graphviz/graph.h PATH ${_GRAPHVIZ_INCLUDE_DIR})

I don't have a graph.h file, and neither a libgraph.so

'make install' requires sudo to install into homedir

I get the following trying to install without sudo. Since It only writes stuff to my homedir it shouldn't require root rights:

Install the project...
-- Install configuration: "Release"
-- Installing: /Users/tobias/gammaray/lib/gammaray_probe.dylib
-- Up-to-date: /Users/tobias/gammaray/man/man1/gammaray.1
-- Installing: /Users/tobias/gammaray/lib/qt4/plugins/styles/gammaray_injector_style.so
-- Installing: /Users/tobias/gammaray/bin/gammaray
-- Up-to-date: /Users/tobias/gammaray/include/gammaray/objectmodel.h
-- Up-to-date: /Users/tobias/gammaray/include/gammaray/objecttypefilterproxymodel.h
-- Up-to-date: /Users/tobias/gammaray/include/gammaray/probeinterface.h
-- Up-to-date: /Users/tobias/gammaray/include/gammaray/singlecolumnobjectproxymodel.h
-- Up-to-date: /Users/tobias/gammaray/include/gammaray/toolfactory.h
-- Installing: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_objectvisualizer_plugin.so
-- Up-to-date: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_objectvisualizer.desktop
-- Installing: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_scriptenginedebugger_plugin.so
-- Up-to-date: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_scriptenginedebugger.desktop
-- Installing: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_statemachineviewer_plugin.so
-- Up-to-date: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_statemachineviewer.desktop
-- Installing: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_webinspector_plugin.so
-- Up-to-date: /Users/tobias/gammaray/lib/qt4/plugins/gammaray/gammaray_webinspector.desktop
-- Installing: /Users/tobias/gammaray/lib/libgammaray_widget_export_actions.dylib
CMake Error at cmake_install.cmake:65 (FILE):
file Internal CMake error when trying to open file:
/Users/tobias/dev/rep/GammaRay/build/install_manifest.txt for writing.

GammaRay sidebar greyed out

I built the recent head of GammaRay for Qt5.2.1 on x64, Windows. When attaching to or launching a compatible app (release or debug), inprocess or out of process local, I always get this:

gammaray

Note the left sidebar is completely greyed out, and the actions menu is empty, and nothing is available. Am I doing something wrong or is this a bug?

Unable to configure plugins and libexec installation destination

Passing -DLIBEXEC_INSTALL_DIR=/usr/libexec/gammaray to CMake has no impact and gammaray-launcher and gammaray-client are always installed to /usr/lib64/gammaray/libexec. Although this is a good default, it would still be nice if packagers could choose the destination (e.g. /usr/libexec/gammaray, as recommended by Fedora packaging guidelines).

Passing -DPLUGIN_INSTALL_DIR=/usr/lib64/qt4/plugins to CMake is ignored by all plugins (they install to /usr/lib64/gammaray/version/qt-build/), except for gammaray_kjobtracker, which installs to /usr/lib64/plugins/version/qt-build/.

I tried making the variables configurable by users (see the patch below), which worked for plugins, but has broken lookup of the libexec utilities:

$ gammaray                                                                      
"gammaray-launcher" not found in the expected location(s): 
"/usr/bin/..//bin/gammaray-launcher, /usr/bin/..///usr/libexec/gammaray-launcher" 
continuing anyway, hoping for it to be in PATH. 

libexec is usually not in PATH, so it does not work :)

diff --git a/CMakeLists.txt b/CMakeLists.txt                                                                                                                                                                                         
index bdffd69..fc8b312 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -259,8 +259,12 @@ if(WIN32)
   set(PLUGIN_INSTALL_DIR "plugins")
   set(LIBEXEC_INSTALL_DIR "${BIN_INSTALL_DIR}")
 else()
-  set(PLUGIN_INSTALL_DIR "${LIB_INSTALL_DIR}/gammaray")
-  set(LIBEXEC_INSTALL_DIR "${LIB_INSTALL_DIR}/gammaray/libexec")
+  if(NOT PLUGIN_INSTALL_DIR)
+    set(PLUGIN_INSTALL_DIR "${LIB_INSTALL_DIR}/gammaray")
+  endif()
+  if(NOT LIBEXEC_INSTALL_DIR)
+    set(LIBEXEC_INSTALL_DIR "${LIB_INSTALL_DIR}/gammaray/libexec")
+  endif()
 endif()
 if(UNIX AND NOT APPLE)
   set(DOC_INSTALL_DIR share/doc/gammaray/)

LIB_INSTALL_DIR set to a Relative Path

Hi, I noticed that you set the LIB_INSTALL_DIR variable in line 123 of GammaRay-1.3.0/CMakeList.txt to a relative path. This triggers some security warnings in Gentoo when installing the package. Is this intended or can it be changed to /usr/lib${LIBSUFFIX}?

State machine graph broken for states with duplicate object name

I've got state machine in which multiple states can have the same name, for example there are 3 states with the object name "directory", each with a different parent.
The tree view on the left shows that correctly.
However, in the graph view on the right, there is only one "directory" state, and the hierarchy is messed up because of that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.