типично Конан Пакет содержит только артефакты сборки, такие как *.dll
, *.lib
, *.pdb
, *.so
, *.a
, *.dylib
файлы, а также заголовки данных С или же C ++ библиотека. Однако иногда, когда вы отлаживаете использование кода, библиотека очень полезна, чтобы иметь возможность войти в код библиотеки и посмотреть, что происходит внутри. Например, чтобы определить, возникают ли какие-либо проблемы, из-за неправильного использования библиотеки или из-за ошибки в ней.
Есть две стратегии, которые могут работать для отладки зависимостей:
--build=PkgName
аргумент. При сборке пакета из исходных кодов, в зависимости от системы сборки, возможно, что двоичные артефакты ссылаются на временную папку сборки, в которой был собран пакет, и затем могут найти их и использовать для отладки. Эта стратегия может работать для сторонних пакетов, даже если они не учитывают отладку.С gdb
Вы могли бы сделать что-то вроде
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)
Чтобы убедиться, что вы компилируете с правильными флагами, а также что исходные файлы также упакованы. Тогда, на стороне потребителя, вы можете захотеть imports
.cpp
файлы, так что gdb
Отладчик может найти их помимо отлаживаемого двоичного файла или поиграть с вашим путем отладчика, чтобы добавить папку пакета.
В Windows, с Visual Studio, вы, вероятно, хотите упаковать .pdb
файлы
Других решений пока нет …