GDB backtrace zeigt nicht die Funktion Namen

Den ich kompiliert habe, meine Bibliothek (speziell protbuf-2.3.0) mit -g -O0 auf einem SunOS 5.10.

Eine Beispiel-Zeile in der log steht dies:

/bin/bash ../libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I..    -D_REENTRANT -pthreads -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare  -g -O0 -MT text_format.lo -MD -MP -MF .deps/text_format.Tpo -c -o text_format.lo `test -f 'google/protobuf/text_format.cc' || echo './'`google/protobuf/text_format.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -D_REENTRANT -pthreads -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -g -O0 -MT text_format.lo -MD -MP -MF .deps/text_format.Tpo -c google/protobuf/text_format.cc  -fPIC -DPIC -o .libs/text_format.o

Und dann, ich legte meinen gdb mit den folgenden Schritten:

  1. Meine Anwendung (in diesem Fall my web-server startet ein java-web-app, die verwendet eine library über jni während des Startvorgangs).
  2. Ich legte mein gdb an den Prozess über gdb -p XXX (wobei XXX die pid habe ich von ps).
  3. Und dann lud ich meine Bibliothek aus der gdb mit file libprotobuf.so von der gdb Eingabeaufforderung.

Aber ich kann nicht sehen, meine Funktion, die Namen von bt. Mein GDB backtrace Befehl zeigt so etwas wie dies:

(gdb) bt 
#0  0xf8f98914 in ?? ()
#1  0xf8f98830 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Ich auch versucht zu tun #1 & #2, #1 & #3, und #1 & gdb libprotobuf.so -p XXX.

Abgesehen von diesen, ich habe auch versucht mit meinem jvm auf debug-Modus und hat einen Haltepunkt auf die System.loadLibrary(..) Befehl, und nachdem wir über diesen Befehl, ich habe dann die gdb-Anlage-Prozess wieder....aber immer noch nichts.

Allerdings bin ich in der Lage, um Haltepunkte gegeben Funktionsnamen und eine Liste der Inhalt einer Funktion über list. Aber dann wieder, ich kann zwar breakpoints, aber Sie nicht zu stoppen, als auch auf die Funktion Namen (ich weiß, es ging um die Funktion, weil es in der jvm-hs_err_pid Bericht nach jeder jvm-crash).

Irgendwelche Ideen kommen, es geht nicht zeigt mir meine Funktionsnamen?

  • Wahrscheinlich sind Sie nicht berufen GDB korrekt. Bitte zeigen, wie die ausführbare Datei verlinkt wurde und wie Sie befestigt GDB zu.
  • Danke, ich habe jetzt mehr Informationen auf der gdb-Anlage verarbeitet, die ich ausprobiert habe.
InformationsquelleAutor Franz See | 2010-03-09
Schreibe einen Kommentar