Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Вниз

Подавления окна отладчика "Debugger Exception Notification"   Найти похожие ветки 

 
Добежал   (2009-01-19 19:34) [0]

Когда приложение запускается из под среды при возникновении исключения всплывает окно отладчика с информацией об исключении:

http://s2.ipicture.ru/uploads/090119/1X925CUaU7.jpg
(зеркало): http://s47.radikal.ru/i117/0901/b1/0db2c8b51aa2.jpg

И получается забавно в случае с приложением, которое развернуто на весь экран поверх всех окон.

С одной стороны во время наступления исключения отладчик тормозит выполняющиеся потоки до момента закрытия этого диалогового окна и приказа продолжить выполнение. С другой стороны, этого всплывающего диалога из под приложения "поверх всех окон" просто не видно. В результате все висит и нихрена не сделаешь (

Как можно отключить выдачу данного окошка при выполнении определенных строк кода?

Я сразу отмечу, что не хочу в принципе отключать данное всплывающее окно отладчика. Также я не хочу убирать реагирование на данный тип исключения. Просто чтобы на определенных строках кода данное окошко не всплывало, но исключение отрабатывалось операторами try..except в рантайме.


 
Leonid Troyanovsky ©   (2009-01-19 19:41) [1]


> Добежал   (19.01.09 19:34)  

> Я сразу отмечу, что не хочу в принципе отключать данное
> всплывающее окно отладчика. Также я не хочу убирать реагирование
> на данный тип исключения.

Убери на весь экран поверх всех.
Все равно, оно лишнее.

--
Regards, LVT.


 
Добежал   (2009-01-20 11:54) [2]

Нравится мне этот форум. Люди понятия не имеют о задачах, но все равно думаю что они умнее всех и лучше автора знают что ему надо.

--
Regards, Pit.


 
Добежал   (2009-01-20 14:18) [3]

Блин, судя по молчанию здесь, по отзывам знающих людей проблема просто не имеет решения впрямую.


 
AndreyV ©   (2009-01-20 14:26) [4]

> [3] Добежал   (20.01.09 14:18)
> Блин, судя по молчанию здесь, по отзывам знающих людей проблема
> просто не имеет решения впрямую.

Желание странное. Запускай не из среды.


 
Jack128_   (2009-01-20 14:34) [5]


> Желание странное. Запускай не из среды.

иногда бывает желание забить на исключения в функции А, но обращать внимание на исключения в функции Б.


 
Leonid Troyanovsky ©   (2009-01-20 15:13) [6]


> Добежал   (20.01.09 11:54) [2]

> но все равно думаю что они умнее всех и лучше автора знают
> что ему надо.

Я тоже так думаю.
Это ж надо - "развернуто на весь экран поверх всех".
Эмуляция десктопа, млин.

--
Regards, LVT.


 
Юрий Зотов ©   (2009-01-20 15:35) [7]

На время отладки - почему бы действительно не отключить "поверх всех"?
После отладки - включить обратно.


 
Добежал   (2009-01-20 15:39) [8]


> Это ж надо - "развернуто на весь экран поверх всех".
> Эмуляция десктопа, млин

а как по-твоему платежные терминалы работают?


> На время отладки - почему бы действительно не отключить
> "поверх всех"?

ну так и делаю. Вопрос только как определять, что запущено из под среды. Выбрал способ с isDebuggerPresent.


 
test   (2009-01-20 15:48) [9]

Добежал   (20.01.09 15:39) [8]
Ты когда сдавать будеш тогда включи, зачем тебе во время отладки/написания лишние трудности?


 
Leonid Troyanovsky ©   (2009-01-20 15:49) [10]


> Добежал   (20.01.09 15:39) [8]

> > Эмуляция десктопа, млин

> а как по-твоему платежные терминалы работают?

Если они работают так, то их надо выкинуть на помойку.

--
Regards, LVT.


 
Добежал   (2009-01-20 15:54) [11]


> Ты когда сдавать будеш тогда включи, зачем тебе во время
> отладки/написания лишние трудности?

мне то все равно. Но если другой человек вдруг из под среды запустить приложение и там в настройках будет стоять не дебаг режим - то он натолкнется на глюк такой. Я лично очень не сразу понял что за нафиг.


> Если они работают так, то их надо выкинуть на помойку.

а как надо работать?


 
Leonid Troyanovsky ©   (2009-01-20 15:58) [12]


> Добежал   (20.01.09 15:54) [11]

> а как надо работать?

Например, на отдельном десктопе.

--
Regards, LVT.


 
Кто б сомневался ©   (2009-01-20 16:01) [13]


> Как можно отключить выдачу данного окошка при выполнении
> определенных строк кода?


Те. нужно отключить выдачу определенного исеключения во время работы в среде.
ну так делай собственный тип исключения, и добавляй его в Debugger Options >> language Exception.


 
Добежал   (2009-01-20 16:35) [14]


> Например, на отдельном десктопе.

а можно поподробнее: какие при этом будут преимущества, как создавать десктоп, как выводить его на активный экран?

Например, если к компьютеру подключено два монитора, то при обычном запуске можно управлять, перетащить на каком мониторе будет отображаться, если делать на отдельном десктопе возможно ли это будет делать, насколько просто?


> ну так делай собственный тип исключения, и добавляй его
> в Debugger Options >> language Exception.

были мысли... Но в общем проблема решена с помощью isDebuggerPresent


 
ketmar ©   (2009-01-20 17:02) [15]

>[14] Добежал (2009-01-20 16:35:00)
а чего, на msdn перманентный бан?

---
Do what thou wilt shall be the whole of the Law.


 
Добежал   (2009-01-20 17:27) [16]

перманентная нехватка времени. Не могу себе позволить изучать там что-то (тем более долго, а пока не знаю - не имею представления долго ли), чтобы потом понять, что мне это не подходит.


 
ketmar ©   (2009-01-20 17:45) [17]

>[16] Добежал (2009-01-20 17:27:00)
>перманентная нехватка времени. Не могу себе позволить изучать там что-то

нивапрос. проконсультирую. за деньги, натурально. потому что мы, знаешь ли, тоже не дети Ротшильдов, и время своё драгоценное таки тратили на изучение. а ты хочешь, чтобы тебе теперь бесплатно всё разжевали и ещё запить поднесли. нет пути.

---
Do what thou wilt shall be the whole of the Law.


 
Leonid Troyanovsky ©   (2009-01-20 17:50) [18]


> Добежал   (20.01.09 16:35) [14]


program Project1;

uses
 Forms,
 Windows,
 Unit1 in "Unit1.pas" {Form1};

{$R *.RES}

var
 NewDesktop, thisdesktop : HDESK;

begin
 thisdesktop := GetThreadDesktop(GetCurrentThreadId);
 Application.Free;
 NewDesktop := CreateDesktop( "MyDeskTop", nil, nil, 0,
                               GENERIC_ALL, nil );
 SetThreadDesktop( NewDesktop );
 Application := TApplication.Create(nil);
 SwitchDesktop( NewDesktop );

 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;

 SetThreadDesktop( thisDesktop );
 SwitchDesktop( thisDesktop );
 CloseDesktop( NewDesktop );
end.


> Добежал   (20.01.09 17:27) [16]

> перманентная нехватка времени

У нас этого времени - вагон.
Везде успевает тот, кто никуда не торопится.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-01-20 18:02) [19]


> ketmar ©   (20.01.09 17:45) [17]

>  нет пути.

А, это был воспитательный прием.
Sorry.

--
Regards, LVT.


 
Добежал   (2009-01-20 18:05) [20]

Leonid Troyanovsky, отличный пример, спасибо!

Но непонятно:

1) какие все таки преимущества, что я буду работать на отдельном десктопе?

2) что будет если мой процесс аварийно завершится и не дойдет дело до:
SetThreadDesktop( thisDesktop );
SwitchDesktop( thisDesktop );
?


 
Leonid Troyanovsky ©   (2009-01-20 18:16) [21]


> Добежал   (20.01.09 18:05) [20]


> 1) какие все таки преимущества, что я буду работать на отдельном
> десктопе?

Сравнивай сам vs "развернуто на весь экран поверх всех".

> 2) что будет если мой процесс аварийно завершится и не дойдет
> дело до:
> SetThreadDesktop( thisDesktop );
> SwitchDesktop( thisDesktop ); ?

Это твое дело ;)
И что значит "аварийно"? У нас такого не бывает.
Закончил - и хорошо [33 кв.м]

--
Regards, LVT.


 
Добежал   (2009-01-20 18:40) [22]


> Сравнивай сам vs "развернуто на весь экран поверх всех".

я, если честно, преимуществ не вижу. Просто, если вы сказали что так правильнее,вы знаете ПОЧЕМУ правильнее?

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


 
Leonid Troyanovsky ©   (2009-01-20 19:14) [23]


> Добежал   (20.01.09 18:40) [22]

> я, если честно, преимуществ не вижу. Просто, если вы сказали
> что так правильнее,вы знаете ПОЧЕМУ правильнее?

Потому, что за этим идут вопросы: как отключить Alt-Tab,
Ctrl-Esc & etc.

> дельфи на своем десктопе вывел бы ошибку и точно также бы
> все зависло...

Ну, что ж - бывает.
Я про отладку, во-ще, молчал.

--
Regards, LVT.


 
Добежал   (2009-01-20 19:42) [24]


> Потому, что за этим идут вопросы: как отключить Alt-Tab,
>
> Ctrl-Esc & etc.

ну эта проблема не стоит в силу того, что у киосков клавиатуры нету, из элементов управления тач-экран и все.


> Ну, что ж - бывает.
> Я про отладку, во-ще, молчал.

но зато тема то про отладку. Вы сказали, что нефиг делать поверх всех, как альтернативу вы предложили создать десктоп, который в свою очередь создает точно такие же проблемы, как и режим поверх всех. То есть, критика выбранного варианта работы и предложение альтернативы никоим образом проблему не решает (

А в винде нету каких-либо сочетаний, которые могут менять "активный" десктоп?
Если нету - то получается, пока программа сменившая десктоп не соизволит вернуть активность старому десктопу - пользователь никак не может юзерскими действиями сменить все обратно?

Или по-другому, если вдруг программу которая поменяла десктоп аварийно завершить (TerminateProcess), то на экране будет пустой рабочий стол и юзер не сможет вернутсья к "родному" десктопу, верно это?


 
vuk ©   (2009-01-20 19:46) [25]

>Потому, что за этим идут вопросы: как
>отключить Alt-Tab, Ctrl-Esc & etc.
В терминалах, как правило такой проблемы нет. По причине отсУтствия клавиатуры.


 
Leonid Troyanovsky ©   (2009-01-20 19:52) [26]


> Добежал   (20.01.09 19:42) [24]

>  который в свою очередь создает точно такие же проблемы,
>  как и режим поверх всех. То есть, критика выбранного варианта
> работы и предложение альтернативы никоим образом проблему
> не решает (

Проблемы пока не увидел.

> Или по-другому, если вдруг программу которая поменяла десктоп
> аварийно завершить (TerminateProcess), то на экране будет
> пустой рабочий стол и юзер не сможет вернутсья к "родному"
> десктопу, верно это?

А кто ему будет делать TerminateProcess?
Терминальная сессия? Вот тут надо разобраться,
особенно для платежных терминалов.

--
Regards, LVT.


 
vuk ©   (2009-01-20 19:52) [27]

А вообще при разработке терминала обошлись тем, что сделали программу shell-ом. И никаких "поверх всех".


 
Leonid Troyanovsky ©   (2009-01-20 19:58) [28]


> vuk ©   (20.01.09 19:52) [27]

> А вообще при разработке терминала обошлись тем, что сделали
> программу shell-ом. И никаких "поверх всех".

И это правильно.
Не стоит приумножать сущности сверх нужды.

--
Regards, LVT.


 
ketmar ©   (2009-01-20 20:08) [29]

>[19] Leonid Troyanovsky © (2009-01-20 18:02:00)
>А, это был воспитательный прием.

ну да. я намекал, что хотя бы почитать-разобраться, хоть в основах — оно не вредно никогда.

---
All Your Base Are Belong to Us


 
Leonid Troyanovsky ©   (2009-01-20 20:15) [30]


> Leonid Troyanovsky ©   (20.01.09 19:58) [28]

> Не стоит приумножать сущности сверх нужды.

О..
Задумался: можно ли сформулировать оный принцип
применительно к ему самому.

Пока получлось:
нет нужды плодить суть сверх нужды.

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

--
Regards, LVT.


 
ketmar ©   (2009-01-20 20:22) [31]

>[30] Leonid Troyanovsky © (2009-01-20 20:15:00)
>Какая минимальная символьная последовательность
>в русском языке позволит передать искомый смысл?

«не п…ди!»

---
All Your Base Are Belong to Us


 
Leonid Troyanovsky ©   (2009-01-20 20:24) [32]


> Leonid Troyanovsky ©   (20.01.09 20:15) [30]

> нет нужды плодить суть сверх нужды.

Не плоди суть чрезмерно.

Короче, но некотарая двусмысленность.

Похоже, что победителем может быть нечто вроде "бди!".

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-01-20 20:27) [33]


> ketmar ©   (20.01.09 20:22) [31]

> >Какая минимальная символьная последовательность
> >в русском языке позволит передать искомый смысл?

> «не п…ди!»

О.. Я почти угадал :)

Однако, переобоснуй.

--
Regards, LVT.


 
ketmar ©   (2009-01-20 20:39) [34]

>[33] Leonid Troyanovsky © (2009-01-20 20:27:00)
>Однако, переобоснуй.

вкратце: чуть менее, чем все пложения сущностей (а то и все) ведут к лишнему многословию. сначала поясни, что ты ввёл. потом — зачем. потом пристегни. слова-слова-слова. потому сначала сто раз подумай, прежде чем рот открывать.

---
Do what thou wilt shall be the whole of the Law.


 
Leonid Troyanovsky ©   (2009-01-20 20:43) [35]


> ketmar ©   (20.01.09 20:39) [34]

>  потому сначала сто раз подумай, прежде чем рот открывать.

Тогда получается: «не переп…ди!»

--
Regards, LVT.


 
ketmar ©   (2009-01-20 20:47) [36]

>[35] Leonid Troyanovsky © (2009-01-20 20:43:00)
ну да, может и так. мой вариант более афористичен просто. проблема с этими вариантами в том, что они понятны только тому, кто и так не будет плодить. %-)

---
All Your Base Are Belong to Us


 
Leonid Troyanovsky ©   (2009-01-20 20:50) [37]


> Leonid Troyanovsky ©   (20.01.09 20:43) [35]

> Тогда получается: «не переп…ди!»

Несколько раз повторил заклинание и
понял, что "пере" - перебор.

Т.е., пока наиболее лаконичный перевод Оккамы
на русский  есть "не п..ди".

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-01-20 21:04) [38]


> Leonid Troyanovsky ©   (20.01.09 20:50) [37]

> Т.е., пока наиболее лаконичный перевод Оккамы
> на русский  есть "не п..ди".

После длительных размышлений я пришел к выводу, что эта
форма должна звучать так: "и не п..ди".

Хороше бы еще найти эквивалент в литературном языке,
дабы пользовать его повсеместно.

--
Regards, LVT.


 
ketmar ©   (2009-01-20 21:49) [39]

>[38] Leonid Troyanovsky © (2009-01-20 21:04:00)
>форма должна звучать так: «и не п..ди».

во. подписываюсь, так действительно лучше.

>Хороше бы еще найти эквивалент в литературном языке
у… сомневаюсь, что получится так же выразительно и кратко. всё-таки я не зря взял матерное слово.

---
Do what thou wilt shall be the whole of the Law.


 
Пробегал2....   (2009-01-20 21:53) [40]

Leonid Troyanovsky ©   (20.01.09 19:52) [26]
Проблемы пока не увидел.


проблема описана в самом первом посте.

Если запуск программы происходит из под среды, то при возникновении исключении отладчик останавливает процесс и выводит окошко исключения.

При варианте поверх всех окон это окно отладчика не видно, среду тоже не видно, все застопорилось и помогает только диспетчер задач.

При вашем варианте с новым десктопом будет тоже самое, окно отладчика не будет видно, среду тоже. А вот поможет ли диспетчер задач уже фиг знает.

Я хотел бы переформулировать вопрос - если по каким-либо причинам процесс который "сменил" десктоп аварийно завершен или приложения заглючило - есть ли юзерский метод вернутся на стандартный десктоп?



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.044 c
15-1232373798
TCrash
2009-01-19 17:03
2009.03.29
.bat скопировать ОДИН файл


15-1232663571
Германн
2009-01-23 01:32
2009.03.29
Ну вот ещё один продукт наших студентов.


3-1215183670
BBCHa
2008-07-04 19:01
2009.03.29
TADOQuery и BLOB-поле


6-1200923091
Maloj2007
2008-01-21 16:44
2009.03.29
Передача пакетов между IdTCPCllient и IdTCPServer


15-1232422546
DelphiN!
2009-01-20 06:35
2009.03.29
Неудается завершить пользовательский процес





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский