У меня есть 20+ лет .dll
, написанный на C, который никто из моих коллег не хочет прикоснуться. По уважительной причине, он использует макросы, макроконстанты и кастинг EVERYWHERE, что делает таблицу символов довольно скудной.Как сравнить сегменты .text и .data .dll с теми же в другой .dll?
К сожалению, мне иногда приходится отлаживать этот код, и это сводит меня с ума, что он не использует что-то столь же простое, как enum
s, которое помещает символы в файл .pdb
, чтобы облегчить отладку.
Я хотел бы преобразовать некоторые из #define
s в enum
s, даже если я пока не изменяю типы переменных, но есть настоящий страх, что это вызовет возможные проблемы с точки зрения производительности, если бы это было для изменения генерируемого кода.
Мне нужно показать окончательно, что никаких скомпилированных изменений кода не произойдет, но похоже, что .dll
существенно меняется в 64-битной сборке. Я посмотрел на один из кода разборки функции, и, похоже, он не затронут, но мне нужно показать, что есть и не меняется в двоичном коде, чтобы облегчить страхи моих коллег, а также некоторые из моих собственных трепетов, а также недоумение, как почему любые изменения распространяются на .dll
вообще, хотя .dll
s имеют одинаковый размер.
Кто-нибудь знает, как я могу это сделать? Я пытался использовать dumpbin
, но я не знаком с этим, и я получаю некоторые смешанные результаты, потому что я не понимаю вывод так сильно, как мне нравится.