Bei Aufruf von Desktop-Programmen wie kdiff3, kompare, kwrite, gedit, ... von einem remote-Computer aus gibt es Fehlermeldungen wie
misconfigured D-Bus session bus daemon(Problem ist aufgetreten bei openSuSE 11.4, Linux 2.6.37.6-0.11, x86_64, KDE 4)
Im Login-Script wird durch folgenden Eintrag bei Bedarf ein dbus-daemon gestartet und mittels Umgebungsvariable
den Programmen bekanntgemacht.
Nutzer von csh oder tcsh | Nutzer von bash |
In $HOME/.cshrc ergänzen: if ( ! $?DBUS_SESSION_BUS_ADDRESS ) then eval `dbus-launch --csh-syntax` endif |
In $HOME/.bashrc ergänzen: if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then export $(dbus-launch) fi |
In $HOME/.logout ergänzen if ( $?DBUS_SESSION_BUS_PID ) then kill -15 $DBUS_SESSION_BUS_PID endif |
In $HOME/.bash_logout ergänzen if test -n "$DBUS_SESSION_BUS_PID" ; then kill -15 $DBUS_SESSION_BUS_PID fi |
Anzeige von PDF-Dateien im Browserfenster mit diesem Plugin funktioniert recht sporadisch. Ab einem (zufälligen) Zeitpunkt wird statt der PDF-Datei nur noch eine schwarze oder weiße Fläche angezeigt. - Ursache ist unklar. Der Plugin-Prozess verendet manchmal aus unbekanntem Grund.
Es kann helfen, den Browser komplett zu beenden und neu zu starten, muss aber nicht ...
(muss nicht helfen und muss auch nicht sein)
Wem die Alternative nicht gefällt, das Plugin zu deaktivieren und die PDF's mit externem Viewer anzeigen zu lassen,
der braucht nur (jedesmal, wenn das Plugin versagt)
zwei bestimmte (durch Firefox gestartete) Prozesse killen, von denen mindestens einer offenbar in diesem Fall
hängen geblieben ist.
Danach kann man wieder eine neue PDF-Datei im Browser anzeigen lassen (bzw. die zuvor nicht angezeigte mittels Reload).
Das auszuführende kill-Kommando wird durch mein kleines Skript
~/mspester/bin/howtokillacroplugin
Suche nach den Prozessen von Hand:
ps afx | less -S
Suche in der Ausgabe nach firefox mit Unterprozess acroread:
... 20173 ? S 0:00 \_ /bin/sh /usr/bin/firefox 20178 ? Sl 5:05 \_ /usr/lib64/firefox/firefox-bin 20203 ? Sl 0:00 \_ /usr/lib/mozilla/kmozillahelper 19649 ? Sl 0:00 \_ /usr/lib64/firefox/plugin-container /usr/lib64/browser-plugins/npwrapper.nppdf.so -greomni /usr/lib64/firefox/omni.ja 20178 true plugin 20222 ? S 0:01 \_ /usr/lib/nspluginwrapper/i386/linux/npviewer.bin --plugin /usr/lib/browser-plugins/nppdf.so --connection /org/wrapper/NSPlugins/nppdf.so/19649-3/6 20243 ? Z 0:09 \_ [acroread] <defunct> ...
Der Prozess, in dessen Namen 'acro' vorkommt (hier 20243), und der in der Hierarchie darüber stehende Prozess (hier 20222) sind zu killen, um Firefox (vorübergehend) zu "reparieren"
gprof
Mit dem GNU Profiler kann man feststellen, wo innerhalb eines Programms die meiste Zeit verbraucht wird.
Die Tabelle liefert etwa solche Informationen zum Zeitverbrauch einzelner Unterprogramme:
Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 23.93 18.10 18.10 777602 0.00 0.00 vicopy_ 23.15 35.60 17.50 1026507816 0.00 0.00 dscapr6_ 22.54 52.66 17.05 469631 0.00 0.00 smamvekd_ 12.19 61.88 9.22 309096 0.00 0.00 mattmuladu6_ 2.91 64.08 2.20 22623578 0.00 0.00 dscapr_ 1.43 65.16 1.08 28129781 0.00 0.00 vdplus_ 1.41 66.22 1.07 184 0.01 0.01 nhstmulbpx_ 1.28 67.19 0.97 184 0.01 0.01 nhismulbpx_ 1.24 68.14 0.94 33809129 0.00 0.00 vdcopy_ ...
bzw. zu deren Aufrufhierarchie (wird gerufen von / ruft auf, jeweils mit Anteil an allen Aufrufen)
index % time self children called name ----------------------------------------------- 0.00 26.10 13/13 MAIN__ [1] [6] 34.5 0.00 26.10 13 ppcgm_ [6] 0.00 16.91 184/197 axmebe_ [7] 0.00 8.95 184/184 prloes_ [13] 0.00 0.24 13/13 prevor_ [56] 0.00 0.00 355/22623578 dscapr_ [22] 0.00 0.00 513/8814715 vdaxpy_ [47] 0.00 0.00 13/166747 vdminus_ [76] 0.00 0.00 184/184 zwisch_ [119] ----------------------------------------------- 0.00 1.19 13/197 energyofu_ [28] 0.00 16.91 184/197 ppcgm_ [6] [7] 23.9 0.00 18.11 197 axmebe_ [7] 17.05 0.01 469631/469631 smamvekd_ [10] 0.20 0.35 469631/469631 vdoutelval_ [41] 0.44 0.00 469631/538547 fakku_ [43] 0.06 0.00 469631/4000526 nodeglobal_ [44] 0.00 0.00 197/33809129 vdcopy_ [35] -----------------------------------------------
Nachteil: Die Zeiten und Zeitverhältnisse können vom tatsächlichen Programmverhalten abweichen, weil die Optimierung komplett ausgeschaltet ist.
callgrind
Das Tool callgrind (von valgrind) funktioniert ähnlich wie gprof, bietet aber auch grafische Auswertungen an und erfordert keine speziellen Compileroptionen.
valgrind --tool=callgrind ./myprogram
kcachegrind callgrind.out.*(.* am Ende des Dateinames ist eine Prozessnummer)