Существуют ли какие-либо инструменты отладки параллелизма для C # .NET в VS2010

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

Нам интересно, есть ли какие-либо инструменты, похожие на CHESS (http://research.microsoft.com/en-us/projects/chess/download.aspx), которые работают в / с Visual Studio 2010 для стресс-тестирования приложений и обнаружения потенциальной гонки условия и тупики?


person Pete Martin    schedule 15.09.2011    source источник
comment
Может помочь следующий вопрос SO: stackoverflow.com/ questions / 1715822 /   -  person Christophe Geers    schedule 15.09.2011
comment
Спасибо - приходите туда полезной информацией, особенно по написанию потоковобезопасных тестов и Typemock Racer. Информация здесь (stackoverflow.com/questions/537014/) также был полезен.   -  person Pete Martin    schedule 15.09.2011
comment
Есть ли шанс, что вы пытаетесь использовать классы unit test, которые имеют дело с одиночными объектами и статическими объектами, которые записываются в одном unit test и читаются в других?   -  person Darin Dimitrov    schedule 15.09.2011
comment
Мы используем только статические объекты в сантехнике для наших тестов в методах SetUp (), но мы тщательно сбросили их в наших методах TearDown (), и они никогда не проходят проверку. Это очень большой проект с большим количеством параллелизма, мы знаем, что проблемы кроются в нашем производственном коде, нам просто нужно иметь возможность последовательно воспроизводить условия гонки / взаимоблокировки, чтобы найти проблемы - мы также убеждены, что параллелизма больше. проблемы, чем мы на самом деле наблюдали до сих пор. Такой инструмент, как ШАХМАТЫ, решит все это за нас.   -  person Pete Martin    schedule 15.09.2011


Ответы (2)


В Visual Studio 2010 (не знаю, в каких именно выпусках) вы можете создать новый сеанс профилирования с опцией «Параллелизм». Это должно обнаружить искомые тупиковые ситуации. Затем вы можете профилировать модульный тест, чтобы автоматизировать множество запусков.

Не удалось найти много изображений результатов, но вот пример  example
(источник: microsoft.com)

person Ian    schedule 15.09.2011
comment
И, к сожалению, у нас нет Ultimate :( - person Pete Martin; 15.09.2011
comment
msdn.microsoft.com/en-us/library/dd537632.aspx msdn.microsoft.com/en-us/magazine/ee336027.aspx Это документация по использованию VS2010 Concurrency Visualizer - для пользователей stackoverflow. - person Bhuvan; 09.11.2011

Другой инструмент только от Microsoft Research, вы можете загрузить его с Codeplex - chesstool.codeplex.com. Он поддерживает библиотеки .Net 4.0, следующую версию Chess, но я не знаю, что вы можете ее использовать.

person Anuraj    schedule 17.10.2011
comment
Я ищу тот, который работает с Visual Studio 2015, но столь же мощный - person Tim Schmelter; 12.10.2016