Подсказки по отладчику Visual Studio и приемы (для проектов C/C++)

Используйте этот код вместо: -

public void SaveFile()
{
    try {
            //Getting Internal Storage
            File file = new File(Environment.getExternalStorageDirectory(),"");
            File dfile = new File(file+"/data.txt");
            FileWriter write = null;
            //if File Does Exists
            if (!dfile.exists()) {
                write = new FileWriter(file+"/data.txt");
                write.write("1");
                write.close();
            }
            else{
                FileReader read = new FileReader(dfile);
                BufferedReader br = new BufferedReader(read);
                String snum = br.readLine();
                if(snum!=null) {
                    //Converting Sring to Integer
                    int num = Integer.parseInt(snum);
                    num++;
                    write = new FileWriter(file+"/data.txt");
                    write.write(String.valueOf(num));
                    write.close();
                }
                else
                {                    
                    write = new FileWriter(file+"/data.txt");
                    write.write("1");
                    write.close();
                }
            }
        }catch (IOException ex){}
}

Добавьте эти разрешения в файл манифеста: -

<uses-permission android:name="READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="WRITE_EXTERNAL_STORAGE"></uses-permission>
15
задан Mark Biek 20 October 2008 в 18:02
поделиться

7 ответов

Мне действительно нравится возможность настроить дисплей Отладчика типов и структур через AutoExp.dat. Файл расположен в

..\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\autoexp.dat

и позволяет определять собственные шаблоны для дисплея данных во время отладки:

При отладке Подсказки по Данным и объекты в окнах Watch и Variable автоматически расширены для показа их самых важных элементов. Расширение следует за форматом, данным правилами в этом файле. Можно добавить правила для типов или изменить предопределенные правила.

Файл полон хороших примеров, и можно легко адаптировать определенные шаблоны к собственным потребностям или добавить новые для собственных классов.

9
ответ дан 1 December 2019 в 01:24
поделиться

Можно определить имена потоков с помощью несколько неловкой части кода. См. эту статью в MSDN.

6
ответ дан 1 December 2019 в 01:24
поделиться

Некоторый другой tips&tricks я нашел в этой статье:

ptr,su -> display ptr as if it was a string of unicode chars.
val,hr -> view val as a hresult data
val,wc -> view val as a window class
val,wm -> view val as a window message
5
ответ дан 1 December 2019 в 01:24
поделиться

Вероятно, самой важной подсказкой, которую можно использовать, является DebugBreak. Поместите DebugBreak () в Вашем коде, и когда он выполняется, он похож на удар точки останова.

Реальная хорошая вещь состоит в том, что можно затем поместить условные выражения на него, которые могли бы частота ошибок по битам трудно для установки на регулярной точке останова. Учитесь использовать это!

Например, Ваша программа отказывает, когда она переваривает определенный файл данных. Вы обнаруживаете, что это отказывает в определенной функции, но только после того, как это назвало миллион раз +. Вы также выяснили, что это отказывает, потому что определенный переменный вызов это, x имеет значение 1001, но x, как предполагается, между 0 и 1000. Таким образом вместо того, чтобы надеяться к счастью поймать место, где x становится к большому, Вы находите каждое место этим изменения x. Право после этого Вы помещаете оператор: если (x> 1000) DebugBreak ();

Да можно сделать это с условными точками останова, но я видел программу, которая занимает 1 секунду для выполнения, замедляются к 15 минутам с тремя точками останова coniditional, но выполняются за 1,5 секунды с DebugBreak.

Сказав, что вот несколько полезных предложений. Математически докажите себе, что причина, Вы думаете ошибка, происходит, составляет фактическую ошибку, происходящую, по крайней мере, часть времени (вряд ли, чтобы иметь две ошибки, создают ту же проблему, но это происходит). Я видел некоторые самые глупые меры, помещенные на месте, потому что люди "чувствуют", что это - причина ошибки. Удостоверьтесь, что Ваша логика является столь же здравой как любое доказательство в классе геометрии.

Второе предложение, если Вы вставляете экспериментальную фиксацию, и она ничего не делает. Выньте его.

6
ответ дан 1 December 2019 в 01:24
поделиться

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

4
ответ дан 1 December 2019 в 01:24
поделиться
  • Некоторая отладка / связанные с часами подсказки:

    Используйте следующее в окне Watch для обнаружения то, что возвратил бы GetLastError ():

    @ERR, час

  • При использовании Visual Studio 2003 или ранее используйте это отслеживаемое выражение для обнаружения длины станд.:: вектор v:

    v. _ Майласт - против _ Myfirst

    Можно также перечислить, например, сначала 5 записей с этим выражением:

    v. _ Myfirst, 5

    Это не работает при использовании STLport и метода obsoleted в VS> = 2005 с новым выражением visualizers.

  • Если Вы хотите видеть возвращаемое значение функции, посмотреть на регистр eax (просто вводят eax в окно часов). Можно даже изменить возвращенное значение. Если это - указатель на строку или массив, можно также ввести eax в Окно памяти для наблюдения базовой строки.

3
ответ дан 1 December 2019 в 01:24
поделиться

Блог SaraFord является блестящим для полезных советов Visual Studio - Блог Sara Ford

3
ответ дан 1 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

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