А>Да, вы видим, чтото типа А>mscorlib_ni+0x2f2bbb А>mscorlib_ni+0x3675d1 А>mscorlib_ni+0x36740f
Отключите JIT. Убедитесь, что у вас есть CLR reference sources и правильные pdb. Это можно на сайте микрософта взять.
А>Причем бесит то — что почему то нашей библиотеки ни разу ни в одном стектрейсе не было видно.
Потому что стек у вас неправильный. А неправильный он потому что сохраняете дамп неправильно. Без контекста исключения. Вы может быть даже не в тот thread смотрите. А еще managed дампу флаги нужны другие, лучше всего сохранять все по максимуму, минидампом отделаться не получится, потому что managed heap.
А>Так что чем он ТАК принципиально отличается от WinDBG — что вы предлагаете юзать его при отладке А>managed кода?
В вопросах сложной отладки C++, а особенно взаимодействия C++ и C#, отладчик студии может не потянуть. А windbg — сила.
Здравствуйте, Аноним, Вы писали:
А>Нет — WinDBG даже и не думали юзать — ибо на кой ляд тогда в купленной студии существует свой А>дебаггер? С С++ кодом, что нам надо — он отлично справляется. И с дампами кода на основе С++ тоже. А>Так что чем он ТАК принципиально отличается от WinDBG — что вы предлагаете юзать его при отладке А>managed кода?
При открытии дампа в VS у вас есть кнопка "Debug with Mixed"? Или только "Debug with Native Only"?
Какую версию .NET используете?
Re[5]: исключения+ дампы = ловля на живца
От:
Аноним
Дата:
15.07.13 09:33
Оценка:
Здравствуйте, breee breee, Вы писали:
BB>Здравствуйте, Аноним, Вы писали:
А>>Нет — WinDBG даже и не думали юзать — ибо на кой ляд тогда в купленной студии существует свой А>>дебаггер? С С++ кодом, что нам надо — он отлично справляется. И с дампами кода на основе С++ тоже. А>>Так что чем он ТАК принципиально отличается от WinDBG — что вы предлагаете юзать его при отладке А>>managed кода?
BB>При открытии дампа в VS у вас есть кнопка "Debug with Mixed"? Или только "Debug with Native Only"? BB>Какую версию .NET используете?
Debug with Native Only.
На всех компах в офисе стоит 4. Она же должна стоять и на машинах заказчика — ибо все проги ему были
выданы. тут этот момент мы проверить не можем — просто верим ему.
Но есть мини подозрение — ибо при открытии дампа в студии мы видим строку
Сведения о системе — версия среды исполнения — 2.0
WTF?
по идее такого быть не должно.
Здравствуйте, Аноним, Вы писали:
А>Debug with Native Only. А>На всех компах в офисе стоит 4. Она же должна стоять и на машинах заказчика — ибо все проги ему были А>выданы. тут этот момент мы проверить не можем — просто верим ему. А>Но есть мини подозрение — ибо при открытии дампа в студии мы видим строку А>Сведения о системе — версия среды исполнения — 2.0 А>WTF? А>по идее такого быть не должно.
Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.
Re[7]: исключения+ дампы = ловля на живца
От:
Аноним
Дата:
15.07.13 09:55
Оценка:
Здравствуйте, breee breee, Вы писали:
BB>Здравствуйте, Аноним, Вы писали:
А>>Debug with Native Only. А>>На всех компах в офисе стоит 4. Она же должна стоять и на машинах заказчика — ибо все проги ему были А>>выданы. тут этот момент мы проверить не можем — просто верим ему. А>>Но есть мини подозрение — ибо при открытии дампа в студии мы видим строку А>>Сведения о системе — версия среды исполнения — 2.0 А>>WTF? А>>по идее такого быть не должно.
BB>Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.
но мы же точно ставили дотнет 4 версии. КАК тогда мы могли получить CLR 2.0?
может в студии для дотнета надо спецопции включать? мыж ее тока под С++ затачивали...
Здравствуйте, Аноним, Вы писали:
BB>>Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.
А>но мы же точно ставили дотнет 4 версии. КАК тогда мы могли получить CLR 2.0?
А>может в студии для дотнета надо спецопции включать? мыж ее тока под С++ затачивали...
Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит.
В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?
Re[9]: исключения+ дампы = ловля на живца
От:
Аноним
Дата:
15.07.13 10:20
Оценка:
Здравствуйте, breee breee, Вы писали:
BB>Здравствуйте, Аноним, Вы писали:
BB>>>Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.
А>>но мы же точно ставили дотнет 4 версии. КАК тогда мы могли получить CLR 2.0?
А>>может в студии для дотнета надо спецопции включать? мыж ее тока под С++ затачивали...
BB>Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит. BB>В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?
хренотень какая то... mscoree.dll — 4.0. mscorlib.ni.dll — 2.0. mscorjit.dll — 4.0 и вот так вот чередование идет....
Да ну как такое возможно? что это за тупейшие грабли?
BB>>Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит. BB>>В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?
А>хренотень какая то... mscoree.dll — 4.0. mscorlib.ni.dll — 2.0. mscorjit.dll — 4.0 и вот так вот чередование идет.... А>Да ну как такое возможно? что это за тупейшие грабли?
Это выглядит как будто у них установлен 4.0, но ваша программа просит версию ниже.
У вас в свойствах C#-проекта точно Target framework выставлен .NET Framework 4.0 (а также либа требует эту версию)?
Re[11]: исключения+ дампы = ловля на живца
От:
Аноним
Дата:
15.07.13 11:13
Оценка:
Здравствуйте, breee breee, Вы писали:
BB>>>Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит. BB>>>В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?
А>>хренотень какая то... mscoree.dll — 4.0. mscorlib.ni.dll — 2.0. mscorjit.dll — 4.0 и вот так вот чередование идет.... А>>Да ну как такое возможно? что это за тупейшие грабли?
BB>Это выглядит как будто у них установлен 4.0, но ваша программа просит версию ниже. BB>У вас в свойствах C#-проекта точно Target framework выставлен .NET Framework 4.0 (а также либа требует эту версию)?
в свойствах точно выставлено. ну а уж требует ли либа при старте этот 4 нет или нет — не понятно.
по идее она не должна подгружаться, если не находит подходящего CLR... но эт в теории...
А>в свойствах точно выставлено. ну а уж требует ли либа при старте этот 4 нет или нет — не понятно. А>по идее она не должна подгружаться, если не находит подходящего CLR... но эт в теории...
// ================================= M E T A I N F O ================================================
// ===========================================================
// Metadata section: 0x424a5342, version: 1.1, extra: 0, version len: 12, version: v4.0.30319
// flags: 0x00, streams: 5
...
Здравствуйте, breee breee, Вы писали:
А>>в свойствах точно выставлено. ну а уж требует ли либа при старте этот 4 нет или нет — не понятно. А>>по идее она не должна подгружаться, если не находит подходящего CLR... но эт в теории...
BB>Можно узнать при помощи такой команды: BB>
BB>// ================================= M E T A I N F O ================================================
BB>// ===========================================================
BB>// Metadata section: 0x424a5342, version: 1.1, extra: 0, version len: 12, version: v4.0.30319
BB>// flags: 0x00, streams: 5
BB>...
BB>
да, все так и есть. круто, да? таких глюков по теории и быть то не должно. но они есть....
не жизнь, а рассадник бермудских треугольников))
Здравствуйте, Аноним, Вы писали:
А>таких глюков по теории и быть то не должно. но они есть....
Это Вам кажется, бо Вы теорией не владеете.
CLR всегда поддерживала side-by-side исполнение для обычного managed-кода. А с 4.0 поддерживает сию фичу и для managed COM-компонент. Теперь оные по-умолчанию запускаются в той версии CLR, для которой были собраны. В независимости от того, была ли загружена в процесс другая версия CLR.
Так что иметь две версии CLR в одном процессе — тривиально.
Re[15]: исключения+ дампы = ловля на живца
От:
Аноним
Дата:
15.07.13 15:03
Оценка:
Здравствуйте, drol, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>таких глюков по теории и быть то не должно. но они есть....
D>Это Вам кажется, бо Вы теорией не владеете.
D>CLR всегда поддерживала side-by-side исполнение для обычного managed-кода. А с 4.0 поддерживает сию фичу и для managed COM-компонент. Теперь оные по-умолчанию запускаются в той версии CLR, для которой были собраны. В независимости от того, была ли загружена в процесс другая версия CLR.
D>Так что иметь две версии CLR в одном процессе — тривиально.
т.е. независимо от того, что либу собрали с жестким условием — работать тока с версией 4.0 — в реальности она может запуститься и под 2.0?
по вашей цитате "запускаются в той версии CLR, для которой были собраны" — но собрано то было под и для 4.0. Что же она с компонентами 2.0 то работает?
Здравствуйте, Аноним, Вы писали:
А>т.е. независимо от того, что либу собрали с жестким условием — работать тока с версией 4.0 — в реальности она может запуститься и под 2.0?
И как Вы умудрились из моего постинга сделать такой вывод
А>по вашей цитате "запускаются в той версии CLR, для которой были собраны" — но собрано то было под и для 4.0. Что же она с компонентами 2.0 то работает?
С чего Вы решили, что это именно Ваша компонента работает в CLR 2.0 ?
Re[17]: исключения+ дампы = ловля на живца
От:
Аноним
Дата:
16.07.13 07:55
Оценка:
Здравствуйте, drol, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>т.е. независимо от того, что либу собрали с жестким условием — работать тока с версией 4.0 — в реальности она может запуститься и под 2.0?
D>И как Вы умудрились из моего постинга сделать такой вывод
дык ну под не понятен до конца был пост — поэтому я не вывод сделал(и откуда Вы вывод сделали, что эт я вывод сделал ) — а вопрос задал,
мол вот так что ли понимать Ваши слова надо? Если не так — проясните.
А>>по вашей цитате "запускаются в той версии CLR, для которой были собраны" — но собрано то было под и для 4.0. Что же она с компонентами 2.0 то работает?
D>С чего Вы решили, что это именно Ваша компонента работает в CLR 2.0 ?
В нашей проге более нет ничегошеньки дотнетовского. И если я сделал дамп при падении и в дампе я нахожу сведения о том, что использовался CLR 2.0
и вижу модули подгруженные для дотнета 2 и 4, то для какого же компонента он тогда мог использоваться? Или дотнет во все процессы проникает — как вирус?
И упоминания о нем можно просто вот в любом дампе для любой проги найти?