отладка разделяемой библиотеки, завернутой SWIG в perl - PullRequest
7 голосов
/ 13 июля 2011

Я завернул свой код C / C ++, используя SWIG в Perl.У меня есть несколько ошибок сегментации из-за упакованного кода.Я пытаюсь использовать ddd со скриптом Perl, но, к сожалению, даже если я установил точку останова в строке скрипта (вызывающей код C / C ++), ddd не сможет перейти к C /Код C ++.

Есть ли способ установить точку останова в моей C lib, когда я отлаживаю код Perl, или вы знаете хороший способ / инструмент для отладки C lib, когда я запускаю этот скрипт Perl?

Я использую Linux / gcc.

Ответы [ 2 ]

6 голосов
/ 13 июля 2011

Я сделал простую вещь.Я вызвал gdb непосредственно на perl интерпретаторе.

    gdb /usr/bin/perl
    (gdb) r myscript
    #block the script someway or rerun it
    (gdb) b whatever_my_function

Кажется, что когда скипт запущен, общая память также загружается в память.Как только это произошло, у меня есть вся информация, функции и точки останова для отладки.

0 голосов
/ 13 июля 2011

Я использовал SWIG только для вызова C ++ из TCL и отлаживал его с помощью Visual Studio, но те же идеи должны применяться и для вашего случая.Я опишу, что я сделал для отладки, надеюсь, вы сможете выяснить, как применить это к вашей ситуации.

  • Постройте отладочную версию модуля C ++
  • Убедитесь, чтосценарий TCL включает версию отладки (путь в команде TCL load указывает на версию модуля отладки)
  • Поместите точки останова в код C ++
  • Вызовите сценарий TCL черезотладчик Visual Studio;например, используемая команда: tclsh85.exe MyScript.tcl

HTH

...