Если странность оператора в Visual Studio 2008

Я только что заполнил приложение для Android о wsdl, у меня есть несколько советов, которые нужно добавить:

1. Наиболее важный ресурс - www.wsdl2code.com

2.Вы можете взять имя пользователя и пароль с заголовком, который закодирован с помощью Base64, например:

        String USERNAME = "yourUsername";
    String PASSWORD = "yourPassWord";
    StringBuffer auth = new StringBuffer(USERNAME);
    auth.append(':').append(PASSWORD);
    byte[] raw = auth.toString().getBytes();
    auth.setLength(0);
    auth.append("Basic ");
    org.kobjects.base64.Base64.encode(raw, 0, raw.length, auth);
    List headers = new ArrayList();
    headers.add(new HeaderProperty("Authorization", auth.toString())); // "Basic V1M6"));

    Vectordianzhan response = bydWs.getDianzhans(headers);

3. Иногда, вы не уверены, что либо код ANDROID, либо веб-сервер неверен, тогда отладка важна. в примере, перехватив «XmlPullParserException», зарегистрируйте «requestDump» и «responseDump» в исключении. Кроме того, вы должны перехватить IP-пакет с помощью adb.

    try {
    Logg.i(TAG, "2  ");
    Object response = androidHttpTransport.call(SOAP_ACTION, envelope, headers); 
    Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
    Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
    Logg.i(TAG, "3");
} catch (IOException e) {
    Logg.i(TAG, "IOException");
} 
catch (XmlPullParserException e) {
     Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
     Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
     Logg.i(TAG, "XmlPullParserException");
     e.printStackTrace();
}

11
задан 7 July 2010 в 07:53
поделиться

6 ответов

Я видел это много раз в прошлом. По сути, происходит то, что код, который вы отлаживаете, не соответствует коду, который вы видите.

Я не знаю, чем это вызвано, и решение следует руководящим принципам карго-культа.

  • Закройте все копии Visual Studio
  • Удалите все ваши корзины и папки объектов для этого проекта.
  • Удалите все ваши bin и папки объектов для всех проектов .NET
  • Удалите все файлы, которые вы найдете в "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files"
8
ответ дан 3 December 2019 в 07:13
поделиться

Я предполагаю, что при развертывании происходит что-то странное, поэтому pdb не синхронизирован с реальным кодом. Если вы используете ведение журнала вместо отладчика, чтобы понять, что происходит, я подозреваю, что вы увидите более разумное поведение. Я сомневаюсь, что сама среда CLR ведет себя странно с «если» - гораздо более вероятно, что это несогласованность отладчика / времени выполнения.

6
ответ дан 3 December 2019 в 07:13
поделиться

Я думаю, это похоже на тот случай, когда диапазоны шагов отладки просто отключены. Не всегда можно доверять желтой подсветке в отладчике. На самом деле вы не вмешиваетесь. В более ранних бета-версиях F # у нас было много подобных ошибок, когда желтая подсветка прыгала, как сумасшедшая. Подсветка отладчика в основном зависит от того, что компилятор записывает в файл .pdb в качестве «исходного диапазона», который соответствует конкретному скомпилированному набору инструкций.

Какая это версия VS / C #?

EDIT Видя ответы других, действительно, вероятная причина в том, что ваш файл .pdb не синхронизирован с вашей .dll.

0
ответ дан 3 December 2019 в 07:13
поделиться

Неделю назад у меня была точно такая же проблема. Также есть VS2008, последний SP. Приложение WinForms. Значение было ложным, но if тело всегда выполнялось. Я проводил те же расследования, что и в вашем видео. Вот мой фрагмент кода:

 if (CurrentFileFormatVersion > int.Parse(metaInfo.SimulationFileVersion))
     throw new SimulationFormatException(ws, ss);

Работать без отладчика, скомпилированного как Release, было нормально. Попробуйте.

Я полагаю, в отладчике VS2008 есть ошибка. Как-то воспроизводимо с ключевыми словами if и throw.

РЕДАКТИРОВАТЬ: слово «выполнено» выше, конечно, неверно. Вместо этого следует использовать «Выполнен, но не выполнен».

0
ответ дан 3 December 2019 в 07:13
поделиться

Я видел похожий случай давным-давно, в Delphi, поэтому мой вопрос: компилируете ли вы для выпуска или отладки, с оптимизацией или без?

Причина, по которой я Я спрашиваю, что однажды во время сеанса отладки я обнаружил небольшую процедуру, состоящую из 4-5 строк кода, которая, согласно отладчику, выполнялась в обратном порядке.

В основном, со следующим типом код:

procedure Test;
begin
    Line1;
    Line2;
    Line3;
    line4;
end;

Порядок выполнения, согласно отладчику, был следующим:

procedure Test;
begin             start -+
    Line1;               |                             +-> here -+
    Line2;               |                   +-> here -+         |
    Line3;               |         +-> here -+                   |
    line4;               +-> here -+                             |
end;                                                             +-> end

Причина заключалась в том, что между строками отсутствовали побочные эффекты, поэтому компилятор «оптимизировал» код, переписав его, фактически изменив порядок код должен выполняться полностью в обратном порядке.

Итак, у вас есть оператор throw ниже, который на самом деле выполняется,но компилятор показывает это как тот, с которым у вас возникли проблемы, потому что из-за перестановки кода два оператора throw на самом деле генерируются только один раз как исполняемый код?

Примечание : У меня нет причин знать что это то, что делает Visual Studio, но именно об этом я подумал, когда увидел ваше видео.

3
ответ дан 3 December 2019 в 07:13
поделиться

Просто добавляю "я тоже" на фанковой подсветке кода. Я запускаю VS2008 с C#. У меня есть проект Windows Forms, ссылающийся на библиотеку классов в другом проекте, и я отлаживаю оба проекта построчно. "В какой-то момент" желтая подсветка в отладке была где-то от 14 до 20 строк от реальной выполняемой строки.

Я закрыл VS, открыл каталоги для обоих проектов, удалил все из bin/Debug и obj/Debug в обоих каталогах, затем перезапустил VS. После перекомпиляции и перехода через отладку все снова было в порядке.

Я не знаю, была ли проблема в .манифесте, .pdb, или, возможно, в .Cache-файле. Это не имеет значения. Сдуйте все и все будет в порядке.

FWIW, Гуглинг был почти бесполезен, за исключением того, что он вернул эту SO нить. Все остальные хиты были о проблемах с шаблонами VC++ и VS2005, где SP исправил эту проблему. Это не та же самая проблема.

0
ответ дан 3 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

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