Как я могу отладить двоичный файл, который не имеет отладочных символов? - PullRequest
3 голосов
/ 19 января 2010

У меня есть исполняемый файл, оставшийся от предыдущего программиста (и исходный код недоступен). Дело в том, что все заработало, и я пытаюсь понять, почему. Инструмент читает данные откуда-то и заполняет их списком. Можно ли как-нибудь отладить его и посмотреть, откуда он получает данные?

Какой инструмент может это сделать? У вас есть примеры на это?

Ответы [ 3 ]

5 голосов
/ 19 января 2010

В наборе SysInternals , ранее написанном Марком Руссиновичем, есть целая палитра инструментов, а теперь и на веб-сайте Microsoft (я думаю, все еще бесплатно). Например, есть нечто, называемое FileMonProcessMonitor, которое отслеживает открытие и закрытие файлов и, возможно, также чтение (и многое другое).

Существуют также аналогичные инструменты для мониторинга сети / доступа в Интернет.

Эти инструменты позволяют вам взглянуть на многие аспекты программы с точки зрения «черного ящика», то есть не вдаваясь в исходный или машинный код - просто увидев, что она делает.

1 голос
/ 19 января 2010

Так как вы не сказали нам язык оригинала или IDE, трудно дать совет. Если оригинал был написан на C / C ++, и у вас есть соответствующий файл PDB (Program DataBase) из этой сборки, то вы можете отладить выпуск с именами функций, видимыми просто путем загрузки exe-файла в visual studio и пошагового перехода в него. В противном случае вы полностью застряли в стране ассемблера, что примерно так же весело, как и работа с корневым каналом без анестезии.

Но если у вас нет источника, то (а) у вас, вероятно, также нет PDB и (б) если у вас нет источника, что вы собираетесь делать с любой найденной ошибкой? Вы надеетесь, что проблема связана с внешней причиной?

1 голос
/ 19 января 2010

Так как у вас есть тег "windows", возможно, это не очень полезный ответ, но в среде, подобной Unix, я сначала попробую команду "truss" или, в linux, команду "strace", прежде чем отладить программу, проверить, какие системные вызовы использует двоичный файл, и попытаться найти, откуда поступили данные.

Возможно, вы можете попробовать использовать "strace" из Cygwin , хотя это может быть бесполезно для "чистой" программы Windows.

Другим, возможно, лучшим вариантом в Windows может быть этот другой инструмент .

Я надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...