Я думаю, что нашел ошибку в отладчике в Visual Studio 2013 Update 2. Когда я получаю от абстрактного класса и переопределяю абстрактный метод, который принимает структуру с двумя строками, сеанс отладки завершается с ошибкой AccessViolationException.
Это происходит с 64-разрядной архитектурой и .NET Framework 4.0 и выше (4.5 и 4.5.1).
Действия по воспроизведению:
- Создайте новый консольный проект. Используйте любой процессор или x64 (это будет работать только в 64-битной системе!) и используйте .NET Framework 4.0, 4.5 или 4.5.1.
- Скопируйте и вставьте код ниже.
- Установите точку останова на первой строке кода в методе Main.
- Пройдите код до конца.
- AccessViolationException возникает в последней строке метода Main.
Теперь мои вопросы:
- Может ли кто-нибудь воспроизвести это поведение?
- Как это могло произойти и как я могу отлаживать такие ошибки лучше, чем с Visual Studio?
- Куда я могу сообщить о подобных ошибках?
Спасибо за ваше время.
Код:
using System;
using System.Collections.Generic;
using System.Text;
namespace test
{
class Program
{
static void Main(string[] args)
{
Structure structure = new Structure();
Caller caller = new Caller();
caller.Execute(structure);
}
}
public abstract class Father
{
internal Father()
{
}
public abstract bool Execute(Structure structure);
}
public class Caller : Father
{
public Caller() : base()
{
}
public override bool Execute(Structure structure)
{
return true;
}
}
public struct Structure
{
public string A;
public string B;
}
}