Я хочу использовать recursive_directory_iterator, предлагаемый boost :: filesystem, для удаления каталога.Но во время построения отладчик останавливается с сообщением Полученный сигнал: Sigtrap .Я могу выбрать продолжить (придется делать это несколько раз, потому что перехватывается несколько Sigtraps), и программа будет работать как положено, но отладка с точками останова custum больше не работает.Путь, на который указывает "fs :: path dir", действителен, и я также попытался использовать строку типа fs :: ... dirIter ("D: / validPath") , нопроблема остается.
#include <boost/filesystem.hpp>
namespace boost::filesystem = fs;
void recursiveDeleteDir( fs::path dir )
fs::recursive_directory_iterator endIter;
//At this point debugging is stopped with the message
//Signal Received: SIGTRAP
fs::recursive_directory_iterator dirIter( dir );
for(;dirIter != endIter ; ++dirIter)
{
// do something
}
}
Когда я пытаюсь точно определить, откуда приходит Sigtrap, я теряюсь в глубине деталей реализации boost :: filesystem.
Есть ли у кого-нибудьИдея, почему существуют эти Sigtraps или как они активируются и что еще более важно: есть ли способ избавиться от них
(Конечно, они появляются только в режиме отладки, и программа отлично работает в режиме выпуска, но ядолжен иметь возможность продолжить отладку)
Спасибо за вашу помощь!
edit: я работаю с IDE NetBeans и не имею доступа к полному стеку вызовов,Но это то, что он содержит при получении сигнала sigtrap.: ntdll! LdrFindEntryForAddress ()
05: адрес: [@ 0x003e0000]
06: адрес: [@ 0x50000061]
07: std :: basic_string, std :: allocator> :: _ Rep :: _ S_empty_rep_storage ()
08: адрес: [@ 0x003e0000]
09: std :: basic_string, std :: allocator> :: _ Rep :: _ S_empty_rep_storage ()
10: адрес: [@ 0x40000060]
11: Адрес: [@ 0x0022f968]
12: адрес: [@ 0x00000000]