огромная проблема отладки файла C

У меня есть исходный файл в моем проекте, который имеет больше чем 65 536 строк кода (112,444, чтобы быть точным). Я использую "sqlite объединение", которое существует единственного огромного исходного файла.

Я использую MSVC 2005. Проблемы прибывают во время отладки. Все компилирует и связывается хорошо. Но затем когда я пытаюсь ступить в функцию с отладчиком - он показывает неправильную строку кода.

То, что интересно, - то, что различие между корректным номером строки и тем, который показывает отладчик, точно 65536. Это заставляет меня подозревать (почти быть уверенным в) некоторое переполнение короткого целого без знака.

Я также подозреваю, что это не ошибка в самом MSVC. Возможно, это - ограничение формата отладочной информации. Таким образом, формат отладочной информации, используемый MSVC, хранит номера строки как 2-байтовые короткие замыкания.

Есть ли, что-нибудь может быть сделано об этом (кроме вырезания огромного файла в несколько меньших)?

7
задан valdo 20 May 2010 в 15:56
поделиться

4 ответа

По словам модератора MS, это известная проблема только с отладчиком (компилятор, как вы указали, справляется с ней нормально). Очевидно, что нет никакого обходного пути, кроме использования более коротких исходных файлов. См. официальный ответ на очень похожий вопрос здесь

9
ответ дан 7 December 2019 в 03:12
поделиться

Если вы посмотрите документацию для символьной отладочной информации, вы увидите используемый тип для номеров строк. Например, параметры line и столбца для IDiaSession :: findLinesByLinenum имеют тип DWORD .

Изменить: Как указывает @valdo, это еще не означает, что отладчик правильно работает с огромными номерами строк. Поэтому вам нужно использовать более короткие файлы. К сожалению, такое ограничение существует, но даже если бы его не было, я все равно рекомендовал бы вам разделить исходный код.

0
ответ дан 7 December 2019 в 03:12
поделиться

Вы рассматривали использование WinDBG вместо этого? Это довольно способно, так как команда Windows использует его для отладки O / S, и там есть некоторые файлы biiiig, или, по крайней мере, это было, когда я в последний раз смотрел.

0
ответ дан 7 December 2019 в 03:12
поделиться

Если вы не изменяете SQLite, вы должны просто верить, что он выполняет свою работу. Вообще не нужно вмешиваться. Перед выпуском SQLite проходит большое количество тестов.

-1
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: