Вопрос об использовании windbg для библиотеки DLL из Labview - PullRequest
0 голосов
/ 30 октября 2009

Я пытаюсь отладить dll, которая вызывается приложением Labview. У меня есть правильные файлы символов (загруженные из Microsoft) для таких вещей, как ntdll.dll и других. У меня, конечно, также есть файл pdb для моей DLL. Очевидно, что у меня нет файлов символов для labview; поскольку насколько я знаю National Instruments не выпускает.

Я попробовал простое тестовое приложение, вызывающее dll из windbg.exe. Это хорошо работает. Когда я добавляю labview в mix, windbg, конечно, начинает выдавать ERROR: файл символов не найден для всех вещей labview. Я уверен, что у меня установлены правильные каталоги файлов символов и исходные папки. Я своего рода новичок в Windbg, но я начинаю понимать, что если у вас нет ВСЕХ файлов символов, которые вы используете при его использовании. Это верно? Если так, то я думаю, что это снова fprintf и ограниченная отладка.

Я не хочу использовать Visual Studio, потому что это для полу встроенного приложения, и в нем просто нет места на диске / места для хранения всей Visual Studio.

Ответы [ 3 ]

2 голосов
/ 30 октября 2009

Вам не обязательно будет прятаться, если вы планируете только устанавливать точки останова и все, что угодно в вашей DLL. Это должно работать нормально. Следы стека из вашей DLL обратно в образ LabVIEW начнут жаловаться, но, надеюсь, это все равно, что вас не интересует, и вы можете просто проигнорировать это.

2 голосов
/ 30 октября 2009

Вам необходимо присоединить windbg к процессу LabVIEW, а затем установить точку останова в своем коде DLL. Таким образом, вы сломаетесь, только когда получите код. Вот как это работает в Visual Studio, и быстрый поиск показывает, что он будет работать и с windbg.

1 голос
/ 03 ноября 2009

Вы также можете установить точку останова в windbg, чтобы она прерывалась, как только ваша DLL загружена. Для этого присоедините windbg к процессу Labview и используйте следующую команду: sxe ld foo (где foo - имя вашей dll). Это говорит отладчику прерываться, когда происходит событие загрузки dll, специально для вашей dll. См. http://msdn.microsoft.com/en-us/library/cc266379.aspx для получения дополнительной информации. Когда вы достигнете этой точки останова, вы сможете выяснить, какой символ вы хотели бы использовать в своем коде для отладки.

...