2017-08-05 3 views
2

Typischerweise Conan Paket enthält nur Artefakte bauen wie *.dll, *.lib, *.pdb, *.so, *.a, *.dylib Dateien sowie Headern der gegebenen C oder C++ Bibliothek. Allerdings ist es manchmal sehr nützlich, wenn Sie den Code debuggen, um die Bibliothek zu lesen, um in den Bibliothekscode zu schauen, um zu sehen, was im Inneren passiert. Zum Beispiel, um festzustellen, ob ein Problem vorliegt, sei es aufgrund einer falschen Verwendung der Bibliothek oder wegen eines Fehlers in der Bibliothek.Kann ich den Quellcode der mit dem Conan-Paketmanager gepackten Bibliothek abrufen, um darin debuggen zu können?

  1. Ist es möglich neben Paket, das Sie konsumieren, den Quellcode abzurufen, aus dem es erstellt wird, um darin debuggen zu können?
  2. Wenn dies nicht für beliebiges Paket möglich ist, ob es möglich ist, ein solches Paket selbst zu erstellen?
+1

gelöscht Antwort, wie ich weiß nicht, was die Conan (mit Ausnahme des Barbaren) ist –

+1

@PeterJ Conan ist Paket-Manager für C und C++ Bibliotheken . Ich habe einen Link auf die offizielle Seite in der Antwort. Das Paket enthält normalerweise neben seinen Headern bereits eine Build-Bibliothek. Es scheint, dass die Quelle standardmäßig nicht im Paket verfügbar ist. – bobeff

+0

Ich denke, dass Sie hier suchen möchten: https://github.com/conan-io/conan – mko

Antwort

3

Es gibt zwei Strategien, die Debug-Abhängigkeiten funktionieren könnte:

  • es Erzwingen von Quellen zu bauen, mit dem --build=PkgName Argumente. Wenn Sie das Paket in Abhängigkeit vom Build-System aus Quellen erstellen, ist es möglich, dass die binären Artefakte auf den temporären Build-Ordner verweisen, in dem das Paket erstellt wurde. Anschließend können Sie sie finden und debuggen. Diese Strategie kann für Pakete von Drittanbietern verwendet werden, auch wenn sie das Debuggen nicht in Betracht ziehen.
  • Wenn Sie die Pakete selbst erstellen und das Binärartefakt direkt debuggen möchten, ohne es aus der Quelle neu zu erstellen, dann wäre der richtige Weg, auch die Quellen zu packen. Wenn der Debugger Hilfe benötigt, um diese Quellen zu finden, sollte er verwendet werden.

Mit gdb könnten Sie so etwas wie

def build(self): 
    cmake = CMake(self.settings) 
    gcc_dbg_src = "" 
    if self.settings.compiler == "gcc" and self.settings.build_type == "Debug": 
     gcc_dbg_src = ' -DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s/hello=src"' % os.getcwd() 
    self.run('cmake hello %s %s' % (cmake.command_line, gcc_dbg_src)) 
    self.run("cmake --build . %s" % cmake.build_config) 

def package(self): 
    self.copy("*.h", dst="include", src="hello") 
    if self.settings.build_type == "Debug": 
     self.copy("*.cpp", dst="src", src="hello") 
    self.copy("*.lib", dst="lib", keep_path=False) 
    self.copy("*.a", dst="lib", keep_path=False) 

Um sicherzustellen, dass Sie, dass Sie mit den richtigen Flags kompilieren, und auch, dass die Quelldateien sind zu verpackt. Dann möchten Sie auf der Consumer-Seite imports die Dateien, so dass der gdb Debugger sie neben der binären Debuggen finden kann, oder spielen Sie mit Ihrem Debugger-Pfad, um den Paketordner hinzuzufügen.

in Windows mit Visual Studio, mögen Sie wahrscheinlich die .pdb-Dateien verpacken

Verwandte Themen