Как ожидать, пока удаленный отладчик.NET не присоединил

Во-первых, я думаю, что сигнатура вашей функции clone может быть

virtual std::unique_ptr clone() = 0;

, так как вы хотите получить глубокие копии экземпляров A и исключительного права собственности в B. Во-вторых, вам действительно нужно определить конструктор копирования для вашего класса, когда вы хотите, чтобы он был скопирован. То же самое для оператора присваивания. Это связано с тем, что std::unique_ptr - это тип только для перемещения, что мешает компилятору генерировать реализации по умолчанию.

Другие специальные функции-члены не нужны, хотя они могут иметь смысл. Компилятор не будет генерировать конструктор перемещения и переместить оператор назначения для вас (поскольку вы отправляете свои собственные функции копирования / назначения), хотя в вашем случае вы можете = default; их легко. Деструктор можно точно определить с помощью = default;, который будет соответствовать директиве ядра .

Обратите внимание, что определение деструктора через = default должно выполняться в единица перевода, поскольку std::unique_ptr требует, чтобы полный тип был известен при освобождении его ресурса.

Независимо от того, нужен ли вам конструктор по умолчанию, полностью зависит от того, как вы хотите использовать класс B.

59
задан abatishchev 22 September 2011 в 13:23
поделиться

4 ответа

Можно использовать Система. Диагностика. Отладчик. Свойство IsAttached, чтобы проверить, присоединен ли отладчик к процессу. Это приложение будет ожидать, пока отладчик не был присоединен:

using System;
using System.Diagnostics;
using System.Threading;

namespace DebugApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Waiting for debugger to attach");
            while (!Debugger.IsAttached)
            {
                Thread.Sleep(100);
            }
            Console.WriteLine("Debugger attached");
        }
    }
}
107
ответ дан Daniel Richardson 24 November 2019 в 18:14
поделиться

Я не знаю, так как я никогда не пробовал его, но интересно, могли ли Вы использовать System.Diagnostics.Debugger.Break() для имения его, поразил точку останова и затем ожидают отладчика для присоединения. Я предполагаю, что удаленный отладчик работал бы, но я не знаю наверняка и в настоящее время не имею доступа к своей домашней среде, где я мог легко копировать его и протестировать мою теорию. Существует статья MSDN, говорящая об использовании его в приложении ASP.NET, таким образом, я предполагаю, что это работало бы.

6
ответ дан abatishchev 24 November 2019 в 18:14
поделиться
Debug.Assert(true);

должен также работать, я предполагаю. Между прочим, я также время от времени сталкиваюсь с этим proble, и я делаю

MessageBox.Show() 

:P :P

1
ответ дан 24 November 2019 в 18:14
поделиться

Установите тайм-аут, который дает Вам время для присоединения отладчика.

Thread.Sleep(30000);
0
ответ дан abatishchev 24 November 2019 в 18:14
поделиться
Другие вопросы по тегам:

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