Google nennt mir ne ganz eMenge, aber irgendwie werde ich
nicht daraus schlau. Sind auch meine ersten Gehversuche unter
Linux.
Ja, dann solltest Du Dich gleich mit den Gepflogenheiten vertraut machen, dass man noch vor Google und Internet-Foren zunächst einmal einen Blick in die Dokumentation wirft. Das ist in Deinem Fall:
info gdb
Dort gibt es einen Extraabschnitt zu Threads „Debugging programms with multiple threads“
Weiss ich.
Nur hilft mir das bei der Lösung des Problems nicht weiter. Dort steht, falls du den Abschnitt mal anschaust, nur, wie man Programme mit mehreren Threads debuggen kann und auch wie man feststellt, ob der gdb threads überhaupt unterstützt.
Also ein „info threads“ liefert bei mir im gdb ein leeres Ergebnis. Was wohl darauf hindeutet, dass mein gdb threads unterstützt.
Die Fehlermeldung kommt übrigens beim Versuch, meinen ersten Thread zu starten.
/Dirk
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Konkreter: gdb und threads mit statischem linken
Kleine Verfeinerung:
Das Problem taucht nur auf, wenn ich statisch gegen pthread linke.
habe es mit folgendem probiert:
#include //Gimme thread stuff
#include
#include
void\* MyThreadFunc(void \*arg);
int main(){
pthread\_t thread;
pthread\_create(&thread, NULL, MyThreadFunc, NULL);
pthread\_join(thread, NULL);
std::cout
Wenn ich das ganze übersetze mit
g++ -o test hello.cpp -lpthread
gibt es keine Probleme mit dem gdb.
Wenn ich aber übersetze mit
g++ -static -o test hello.cpp -lpthread
kommt es zu folgendem:
(gdb) run
Starting program: .../test
Hello World from inside a thread!
Program received signal SIG32, Real-time event 32.
0x0804aeef in \_\_pthread\_sigsuspend ()
Ich moechte aber statisch linken, weil das Programm noch andere libs benutzt, die ich ebenfalls nur als Entwicklungsversion vorliegen habe.
/Dirk
/Dirk
Also ein „info threads“ liefert bei mir im gdb ein leeres
Ergebnis. Was wohl darauf hindeutet, dass mein gdb threads
unterstützt.
Nein, das deutet darauf hin, dass Dein gdb keine threads unterstützt. Zumindest, wenn ich die Anleitung richtig interpretiere. Sonst sollte da nackt die Rückgabe „No Stack.“ oder ähnliches erscheinen. Sorry, mehr kann ich dazu auch nicht sagen. Ich hatte noch nie das Problem, meine Entwicklerwerkzeuge selbst kompilieren zu müssen
Nein, das deutet darauf hin, dass Dein gdb keine
threads unterstützt. Zumindest, wenn ich die Anleitung richtig
interpretiere. Sonst sollte da nackt die Rückgabe „No Stack.“
oder ähnliches erscheinen. Sorry, mehr kann ich dazu auch
nicht sagen. Ich hatte noch nie das Problem, meine
Entwicklerwerkzeuge selbst kompilieren zu müssen
Hab mich tatsächhlich verlesen.
Mist! Hab auch keine Lust, den gdb neu zu übersetzen.
Muss wohl mal danach sucen, ob ich das nicht noch irgendwo anders herbekomme.