/usr/share/gtk-doc/html/libbonobo/debugging.html is in libbonobo2-dev 2.24.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Debugging</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="Libbonobo Reference Manual">
<link rel="up" href="misc.html" title="Miscellaneous">
<link rel="prev" href="misc.html" title="Miscellaneous">
<link rel="next" href="libbonobo-faq.html" title="Common Questions">
<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
<td><a accesskey="p" href="misc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="misc.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">Libbonobo Reference Manual</th>
<td><a accesskey="n" href="libbonobo-faq.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry" title="Debugging">
<a name="debugging"></a><div class="titlepage"></div>
<div class="refsect1" title="Debugging">
<a name="id448329"></a><h2>Debugging</h2>
<p>Bonobo component debugging advice, version 0.1
by Michael Meeks <mmeeks@gnu.org></p>
<p>Since it is not transparently obvious how to debug
Bonobo components the following suggestions may be of use.</p>
<div class="refsect2" title="Read the FAQ">
<a name="id448343"></a><h3>Read the FAQ</h3>
<p>This will cover particularly common errors and their
solutions obviating the need for further debugging.</p>
</div>
<hr>
<div class="refsect2" title="Versions">
<a name="id448644"></a><h3>Versions</h3>
<p> It is vital to ensure that the correct versions of
both the component and the container are being
run. The safest way to make sure this is the case is
to explicitly specify the path eg. </p>
<span class="command"><strong> ./bonobo-my-component & ./my-test-container </strong></span>
</div>
<hr>
<div class="refsect2" title="Correct install">
<a name="id448660"></a><h3>Correct install</h3>
<p>It is rather important to make sure that bonobo has
compiled and installed correctly. If you are using CVS
ensure that your bonobo has installed without errors
and that you have run ldconfig.</p>
</div>
<hr>
<div class="refsect2" title="Stale processes">
<a name="id448671"></a><h3>Stale processes</h3>
<p>It is a good idea to check there are no stale
component processes running in the background, check
with</p>
<span class="command"><strong>ps ax | grep 'bonobo-my-component'</strong></span><p>or just:</p>
<span class="command"><strong>bonobo-slay</strong></span>
</div>
<hr>
<div class="refsect2" title="Debugging">
<a name="id448695"></a><h3>Debugging</h3>
<p>So: debugging. The best way to do this is to have
two X-terms, in one run the component:</p>
<span class="command"><strong><pre class="screen">
gdb ./bonobo-my-component
$ r
</pre></strong></span><p>And in the second run the container:</p>
<span class="command"><strong><pre class="screen">
gdb ./my-test-container
$ r
</pre></strong></span><p>Putting breakpoints in shared libraries such as
bonobo is not possible until they have been linked
in. Hence break in main, and then start populating
your breakpoints.</p>
<p>Ok, so it seems some people also get horribly
confused by libtool libraries that are in fact here to
help; libtool creates a shell script in place of the
binary to allow non-installed libraries to be linked
correctly. That aside you need to do:</p>
<span class="command"><strong>$ libtool gdb ./my-program-name.</strong></span><p>NB. don't go fiddling in <code class="filename">.libs</code>,
you will get burned. NNB. it seems that emacs' debug
mode doesn't like this; you have to write a small
<code class="literal">'libtool gdb</code>' wrapper script
eg. '<code class="literal">libtool gdb $@</code>'</p>
</div>
<hr>
<div class="refsect2" title="CORBA method tracing">
<a name="id448765"></a><h3>CORBA method tracing</h3>
<p>There is beautiful built in ORBit2 method tracing
facility that will show you all CORBA invocations,
their objects, arguments, microsecond timestamps
etc. To use it you need to configure ORBit2 with the
--enable-debug switch and then either define the
environment variable <code class="envar">ORBIT2_DEBUG</code> or
use the ORBDebugFlags command line option or orbitrc
flag. See the ORBit2 FAQ for more info.</p>
</div>
<hr>
<div class="refsect2" title="Order of execution">
<a name="id448781"></a><h3>Order of execution</h3>
<p>It is of course important to ensure that the
component has registered before executing the
container. A good guide is to wait until your hard
disk has stopped thrashing madly before running the
container.</p>
</div>
<hr>
<div class="refsect2" title="Nothing will activate!">
<a name="id448791"></a><h3>Nothing will activate!</h3>
<span class="command"><strong><pre class="screen">
export BONOBO_ACTIVATION_DEBUG_OUTPUT=1
bonobo-slay
</pre></strong></span><p> And try again - it's possible that a debug message
is being suppressed by bonobo-activation-server that
this will show you. </p>
</div>
<hr>
<div class="refsect2" title="Nothing seems to happen, the code just locks">
<a name="id448811"></a><h3>Nothing seems to happen, the code just locks</h3>
<p>Check that you are doing either a
<code class="function">bonobo_main()</code> or a
<code class="function">bonobo_activate()</code> followed by
<code class="function">gtk_main()</code>. Failure to do this
will cause strange lockups, caused because the POA is
still queueing incoming requests waiting to be
activated. NB. this must be done in both container
and component.</p>
</div>
<hr>
<div class="refsect2" title="Getting more information">
<a name="id448840"></a><h3>Getting more information</h3>
<p>If you are doing serious development consider
compiling gtk+, glib and bonobo with debugging
symbols:</p>
<span class="command"><strong>export CFLAGS='-g' ; ./configure</strong></span><p>If you suspect the name server of causing problems
use type:</p>
<span class="command"><strong>export BONOBO_ACTIVATION_DEBUG_EXERUN=1</strong></span><p>to get debug to the console, simply adding a
breakpoint in <code class="function">g_log</code> will help get
at the innards of the bonobo-activation
process.</p>
</div>
<hr>
<div class="refsect2" title="Debugging bonobo-activation">
<a name="id448875"></a><h3>Debugging bonobo-activation</h3>
<p> This is often best done by running: </p>
<span class="command"><strong><pre class="screen">
gdb ./bonobo-activation
r --ac-activate
</pre></strong></span><p>
And then cutting and pasting the IOR it spews out into
/tmp/orbit-$USER/reg:...-local.</p>
</div>
<hr>
<div class="refsect2" title="The last resort">
<a name="id448898"></a><h3>The last resort</h3>
<p>And finally when the handfuls of hair are coming out
thick and fast, consider reading the source, it only
looks scary, it won't bite.</p>
</div>
<hr>
<div class="refsect2" title="Talk to the experts.">
<a name="id448908"></a><h3>Talk to the experts.</h3>
<p> Try reading the mailing list <a class="ulink" href="http://www.gnome.org/mailing-lists/archives/gnome-components-list/" target="_top">
archive </a>. </p>
<p>
Alternatively if you wish to buy in the programming expertise to meet
an agressive deadline see: <a class="ulink" href="http://www.gnome-support.com" target="_top">http://www.gnome-support.com</a>.
</p>
</div>
</div>
</div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.14</div>
</body>
</html>
|