windbg: частные pdb символы

Если можно терпеть методы фабрики использования (вместо конструкторов MyClass, Вы попросили), Вы могли всегда делать что-то вроде этого:

class MyClass<T>
{
  private readonly T _value;

  private MyClass(T value) { _value = value; }

  public static MyClass<int> FromInt32(int value) { return new MyClass<int>(value); }
  public static MyClass<string> FromString(string value) { return new MyClass<string>(value); }
  // etc for all the primitive types, or whatever other fixed set of types you are concerned about
}

проблема А здесь состоит в том, что Вам было бы нужно к типу MyClass<AnyTypeItDoesntMatter>.FromInt32, который является раздражающим. Нет очень хорошего пути вокруг этого, если Вы хотите поддержать частность конструктора, но здесь являетесь несколькими обходными решениями:

  • Создают абстрактный класс MyClass. Сделайте MyClass<T>, наследовались от MyClass и вкладывают его в MyClass . Переместите статические методы для MyClass. Это будет вся видимость удаваться, за счет необходимости получить доступ MyClass<T> как MyClass.MyClass<T>.
  • Использование MyClass<T>, как дали. Сделайте статический класс MyClass, который называет статические методы в [1 111] использование MyClass<AnyTypeItDoesntMatter> (вероятно, использование соответствующего типа каждый раз, только для хихиканья).
  • (Легче, но конечно странный) Делают абстрактный тип MyClass , который наследовался от [1 114] . (Для конкретности, скажем, MyClass<int>.), Поскольку можно назвать статические методы определенными в базовом классе через название производного класса, можно теперь использовать MyClass.FromString.

Это дает Вам статическую проверку за счет большего количества записи.

, Если бы Вы довольны динамической проверкой, я использовал бы некоторое изменение на решении TypeCode выше.

5
задан SamB 13 April 2010 в 23:55
поделиться

3 ответа

(частные символы pdb) - это полные символы со всеми деталями.

(символы pdb) - это общедоступные символы, т. Е. Символы, которые вы экспортируете третьим лицам для облегчения отладки.

Дополнительные сведения см. Здесь http: // msdn. microsoft.com/en-us/library/ms789520.aspx[1218 impression

7
ответ дан 13 December 2019 в 22:11
поделиться

Общедоступные символы имеют имя, пропуск указателя фрейма (FPO) для каждой функции, а частные - почти все.

http://msdn.microsoft.com/en-us/library/cc501184.aspx

Обновленный MSDN ссылка: http://msdn.microsoft.com/en-us/library/ff553493.aspx

1
ответ дан 13 December 2019 в 22:11
поделиться

Как правило, общедоступных символов достаточно только для получения трассировки стека - имена функций, FPO данные и т. д.

Private - это надмножество public и также содержит глобальные и локальные переменные, типы и информацию о строке исходного кода. Частные символы предоставляют гораздо более богатые возможности отладки, но раскрывают множество деталей реализации

2
ответ дан 13 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: