Gewusst wie: laden von zusätzlichen Bibliotheken für GDB?
Ich versuche zu Debuggen ein CUDA-Programm, aber wenn ich starten gdb
etwa so:
$ gdb -i=mi <program name>
$ r <program arguments>
Ich bin immer:
/home/wvxvw/Projects/cuda/exercise-1-udacity/cs344/HW2/hw:
error while loading shared libraries: libcudart.so.5.0:
cannot open shared object file: No such file or directory
Process gdb-inferior killed
(formatiert für bessere Lesbarkeit)
(Ich bin mit gdb mit M-xgdb
) Wenn das wichtig ist, dann CUDA-Bibliotheken sind in der .bashrc
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
- Wenn Sie Debuggen möchten ein CUDA-Programm Sie beabsichtigen zu laufen
gdb
odercuda-gdb
? - Ich glaube nicht, dass es die Ursache für das aktuelle Problem mit der cudart Bibliothek, aber wenn, die Straße hinunter, die Sie Debuggen möchten Geräte-code, den Sie verwenden sollten
cuda-gdb
statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Fehler hat nichts zu tun mit GDB: die ausführbare Datei, wenn Sie von innerhalb von GDB, kann nicht die Bibliothek finden, die es braucht.
GDB läuft das Programm in eine neue
$SHELL
, so dass dort gearbeitet haben. Ich Frage mich, ob es einige Interaktion mit dem emacs.In jedem Fall dieses:
sollte das problem lösen.
Update:
Nein, es nicht. Wenn es war, würden Sie nicht das problem haben.
Nun, ich weiß nicht warum es ist nicht richtig eingestellt. Wenn Sie wirklich wollen, um herauszufinden, starten Sie, indem Sie GDB außerhalb von emacs (ausschließen möglich emacs-Interaktionen).
Wenn das problem ist immer noch vorhanden, gdb
show env
,shell env
hinzufügenecho "Here"
zu Ihrem~/.basrc
usw. sollten Ihnen helfen, herauszufinden, wo die Dinge sind nicht wie Sie Sie erwarten.export
trick funktioniert unter OS X mitDYLD_LIBRARY_PATH
auch.set env
hat nicht funktioniert auf OS X.Ich habe dieses problem auch. Ein Weg, um es zu betrachten ist, dass, selbst wenn die LD_LIBRARY_PATH-variable richtig ist, wenn Sie geben Sie
show env
in gdb, es kann nicht richtig sein, wenn Sie tatsächlich führen Sie das Programm aus, weil gdb führt$SHELL -c <program>
um das Programm auszuführen. Versuchen Sie dies als ein test, ausgeführt$SHELL
von der Befehlszeile aus und dannecho $LD_LIBRARY_PATH
. Ist es richtig? Wenn nicht, dann müssen Sie wahrscheinlich, um Sie Ihrem rc - (.tcshrc in meinem Fall).Ich hatte ein ähnliches problem, wenn Sie versuchen zu gdb unter windows 7. Ich nutze MobaXterm Zugriff auf eine Linux-toolbox. Ich installierte gdb getrennt von http://www.gnu.org/software/gdb/ . Ich habe es zu arbeiten, indem Sie sicherstellen, dass der gdb konnte finden, richtige .dll-Dateien, wie erwähnt Beschäftigt Russischen. Wenn Sie haben MobaXterm installiert .dll-Dateien sollten in Ihrem home-Verzeichnis in MobaXterm/slash/bin.
gdb jedoch nicht erkennen, die
LD_LIBRARY_PATH
variable. Für mich, es funktionierte, wenn ich die PATH-variable statt:Ich würde denken, mit
PATH
stattLD_LIBRARY_PATH
könnten für Sie arbeiten-vorausgesetzt, Sie setzen Sie den korrekten Pfad zu deiner Bibliothek.gdb ist auf der Suche nach einer Bibliothek, also warum sind Sie besorgt, mit der include-Pfad? Möchten Sie vielleicht versuchen, den gdb option "solib-search-path", um den Speicherort der libcudart.so.5.0 Bibliothek.