#c #visual-studio #dll #ctypes #remote-debugging
#c #visual-studio #dll #ctypes #удаленная отладка
Вопрос:
Я создаю DLL для python, используя c , и импортирую функции, используя библиотеку ctypes. Я знаю, что для выполнения удаленной отладки вы переходите к Debug -> Attach to Process. Я поставил точку останова в коде Python перед вызовом импортированной функции, но я не знаю, к какому процессу подключиться. Я попытался подключиться к python.exe, но это не сработало.
К какому процессу я должен подключиться или мне нужно выполнить удаленную отладку по-другому, и если да, то как? Спасибо
Комментарии:
1. Пробовал вместо этого ввести точку останова в коде C ?
2. Я также установил точку останова в c , но выполнение не остановилось, и было написано, что эта точка останова не будет достигнута.
3. Если вы посмотрите в окно modules, оно должно сообщить вам, загружена ли ваша dll и доступны ли символы
Ответ №1:
Процесс, к которому необходимо подключиться, — это процесс, который должен вызывать dll. Если вы хотите выполнить удаленную отладку dll, я предлагаю вам обратиться к этой ссылке о Remote Debugging a C Project in Visual Studio
. Кроме того, вы могли бы обратиться к этой ссылке о Debug DLLs in Visual Studio
.
Я предлагаю, чтобы вы могли посмотреть в модулях Windows. Существует несколько ситуаций:
1.No Для этого документа загружены символы Перейдите в окно модулей (Debug > Windows> Modules) и проверьте, загружен ли ваш модуль.
- Если ваш модуль загружен, проверьте столбец состояния символа, чтобы увидеть, были ли загружены символы.
a. Если символы не загружены, проверьте состояние символа, чтобы диагностировать проблему. В контекстном меню модуля в окне Modules щелкните Информация о загрузке символа… чтобы увидеть, куда смотрел отладчик, пытаясь загрузить символы. Дополнительные сведения о загрузке символов см. в разделе Указать символ (.pdb) и исходные файлы.
b. Если символы загружены, PDB не содержит информации о ваших исходных файлах. Это несколько возможных причин:
Если ваши исходные файлы были добавлены недавно, подтвердите, что загружается обновленная версия модуля.
Можно создавать удаленные PDF-файлы, используя опцию компоновщика /PDBSTRIPPED. Удаленные PDF-файлы не содержат информации об исходном файле. Подтвердите, что вы работаете с полной PDB, а не с удаленной PDB. Файл PDB частично поврежден. Удалите файл и выполните чистую сборку модуля, чтобы попытаться устранить проблему.
- Если ваш модуль не загружен, проверьте следующее, чтобы найти причину:
a. Подтвердите, что вы отлаживаете правильный процесс.
b. Убедитесь, что вы отлаживаете правильный код. Вы можете узнать, для отладки какого типа кода настроен отладчик, в окне Процессы (Отладка > Windows> Процессы). Например, если вы пытаетесь отлаживать код C #, убедитесь, что ваш отладчик настроен для соответствующего типа и версии .NET (например, управляемый (v4 *) по сравнению с управляемым (v2*/ v3 *) по сравнению с управляемым (CoreCLR)).
2…. текущий исходный код отличается от версии, встроенной в… Вы могли бы перейти к Debug > Options and Settings
. На Debugging/General
странице снимите Require source files that exactly match the original version
флажок. Обязательно повторно включите эту опцию, когда закончите отладку.
Кроме того, может случиться так, что dll не была загружена в .exe. Вы могли бы установить Properties->Debugging->Working Directory
.
Комментарии:
1. Большое вам спасибо! Я исправил это, щелкнув правой кнопкой мыши на моей DLL в окне модулей и нажав загрузить символы