Вы можете попробовать сделать то, что я делал в * NIX один раз.
Проверьте .c
, сгенерированный из вашего .xs
, обратите внимание, что имя функции xsubpp
дало вашу функцию. Откройте Perl в отладчике и установите точку останова на функцию с именем. Отладчик будет жаловаться, что символ еще не виден, и точка останова будет разрешена во время загрузки общих библиотек. Теперь попробуйте запустить Perl с вашим скриптом в качестве параметра. Если все это работает, тогда отладчик будет правильно разрешать имя символа, когда XS загружается Perl.
В некоторых отладчиках возникают проблемы с такими позже переназначенными символами. Обходной путь - добавить в сценарий после use your::custom::xs;
вызов некоторого редкого системного или стандартного вызова библиотеки (я часто использую getpid()
). Установите точку останова на редкую функцию. Запустите Perl и подождите, пока он не достигнет точки останова при редком вызове. Теперь ваш XS должен быть уже загружен и его символы видны отладчику. Установите точку останова на функции, которые вы хотите отлаживать.
В противном случае, имейте в виду, что вам не следует помещать слишком много логики в XS. XS предназначен только для склеивания и поэтому должен оставаться тонким. Если использование вашего XS требует дополнительной логики, поместите его лучше в .pm
, который должен был уже автоматически генерироваться h2xs
для вашего XS в подкаталоге lib/
.
Надеюсь, это поможет.