Segmentation violation

0 голосов
спросил 19 Апр, 02 от Гость (210,080 баллов) в категории Программные продукты Esri
Как бороться с Segmentation violation, очень часто проект рушится с этим сообщением. Как извлечь виды, компановки и т.п. из испорченного проекта? Меры профилактики?

9 Ответы

0 голосов
ответил 19 Апр, 02 от Гость (210,080 баллов)
Во-первых, рекомендую всегда делать копии ваших проектов.
Очень полезным бывает сохранение документов проекта в файлах ODB, что позволяет при необходимости быстро добавить их в другой проект. В этой целью можно воспользоваться например расширением Viewport2.avx - с сайта ESRI. Довольно удобная штука...
Если вы потеряли какой-то важный проект и край как нужно его спасти попробуйте сделать вот что - тиражируйте ваш проект в другую директорию. Воспользуйтесь расширением ТИРАЖИРОВАНИЕ ПРОЕКТОВ Валеры Хронусова (оно на этом же сайте в разделе ArcScripts). При этом все рабочие файлы будут переписаны и пути к файлам будут переписаны. Один раз я таким образом спас проект. Если и это не поможет, тогда попробуйте такой путь: переместите свою рабочую папку в какую-нибудь другую директорию. В этом случае при открытии проекта последуют сообщения о том , что такая-то тема не найдена и для нее можно указать другой путь в диспетчере файлов. Добавляйте по одной теме последовательно, для остальных делайте отмену. Если проект нормально открылся, выходите без сохранения и снова открывайте, добавляя другую тему и т.д. В конце концов вы найдете ту тему которая глючит (как правило, ошибка возникает именно из-за тем, точнее некорректных манипуляций с ними). Когда тема эта найдена - откройте проект добавив все темы кроме этой....
0 голосов
ответил 19 Апр, 02 от Гость (210,080 баллов)
К вышесказанному (S.E.) могу добавить - работайте под Windows2000. Проблема(сообщение "Segmentation violation") возникает значительно реже, "вылетает" ArcView исключительно редко, а за несколько лет работы ни один проект окончательно не "запортился"(Гарантии, конечно, нет - это мой опыт).
Удачи.
0 голосов
ответил 19 Апр, 02 от Vasiliy2 (8,240 баллов)
Может надо было внимательнее посмотреть разделы техподдержки этого сайта, вопросов будет меньше.
Например:
http://www.dataplus.ru/WIN/TEH_SUPP/ArcView/Salvaging%20DamagedAVProject.htm
И ещё цитирую из тех же источников:
"Хорошей привычкой является создание резервной копии проекта при каждом его открытии. Наличие обновленной резервной копии позволяет проследить этапы работы или создать архив завершенных разработок. Для создания резервной копии проекта при каждом его открытии достаточно внести несколько дополнительных строк на Avenue в системный скрипт открытия проекта Project.Open в программе ArcView GIS. Вот пример, как можно видоизменить этот скрипт.

strFullPath=theFName.GetFullName

strBakPath=strFullPath.Substitute (".apr","bak")

File.Copy (strFullPath.AsFileName,strBakPath.AsFileName)

 
1. Откройте Диспетчер программ, выбрав опцию Загрузить системную программу из меню Текст программы. Скопируйте скрипт Project.Open в пустое окно для скриптов.

2. Поместите приведенный выше текст программы в скрипт после строки

the Fname = FileDialog.Show

3. Назовите скрипт Project.Open, чтобы он заменил исходную версию новой, только что созданной.

4. Откомпилируйте скрипт, но не запускайте его.

5. В окне проекта из меню Проект выберите пункт Адаптировать и в диалоговом окне Настроить щелкните кнопку Задать по умолчанию. В домашнем пользовательском каталоге будет создан файл проекта по умолчанию default.apr, и при каждом открытии проекта будет создаваться его резервная копия."

Предлагаю модификацию для вышесказанного:
strFullPath=theFName.GetFullName

today = Date.Now
today.SetFormat( "ddMMM" )

strBakPath=strFullPath.Substitute (".apr","__"+today.AsString+".bak")

File.Copy (strFullPath.AsFileName,strBakPath.AsFileName)
Может и разорительно, но вся история у вас в кармане

0 голосов
ответил 22 Апр, 02 от Гость (210,080 баллов)
Может надо внимательно читать вопрос, проще будет отвечать на него(если в курсе проблемы, конечно).
Возражения следующие:
1. Ворос был задан по поводу борьбы с конкретным "глюком".
2. Метод дубляжа проекта при открытии имеет следующие минусы:
  - если идет постоянная работа с проектом он открывается исключительно редко(не чаще 1 раза в день), только сохраняется.
  - копировать проект во время сохронения не подходит, т.к. к моменту сохранения он может уже быть испорчен.
  - автоматическое сохранение не гарантирует результата - проект может "криво" сохраниться.
Отсюда рекомендую: прежде чем что-либо назидать неплохо бы поближе ознакомиться с проблемой.
В свою очередь по вопросу рекомендую работать под Windows2000 и почаще сохранять проект по схеме:
1. Сохраняете текущий проект.
2. Открываете его.
3. Если открывается - пересохраните в копию.
4. Открываете копию.
5. Если открывается - откройте основной проект и работайте дальше.
Успехов.
0 голосов
ответил 22 Апр, 02 от Vasiliy2 (8,240 баллов)
Полностью согласен по поводу всех возражений,
только первая ссылка была приведена по существу вопроса на "Восстановление поврежденного файла проекта ArcView GIS", а далее уже вариации на тему
0 голосов
ответил 22 Апр, 02 от Гость (210,080 баллов)
И Вы не берите близко к сердцу... А восстановить проект, конечно, можно - нужно только знать структуру файла проекта:).
0 голосов
ответил 22 Апр, 02 от Vasiliy2 (8,240 баллов)
Интересно как это делать в восьмёрке? Или фирма гарантирует?
0 голосов
ответил 22 Апр, 02 от Гость (210,080 баллов)
В восьмерке есть утилита в arcgis\arcexe81\ArcObjects Developer Kit\Utilities - "MXD Doctor", которая позволяет полностью или частично реанимировать "запорченный" проект.
0 голосов
ответил 13 Май, 02 от Гость (210,080 баллов)
Сообщение "Segmentation violation" появляется  при работе с проектами, сделанными в предыдущих версиях (сейчас работаю с версией 3.2а) только в том случае, когда проект открывается в ArcView через Файл\Открыть проект. Если загружать сразу файл - он открывается, при первом запросе ArcView -открыть существующий проект- тоже открывается.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...