Действительно ли возможно получить стек вызовов программно в VB6?

Просто используйте это:

  $master = $_GET["master"];
  system('unzip' $master.'.zip'); 

в вашем коде $master передано как строка, система будет искать файл с именем $master.zip

  $master = $_GET["master"];
  system('unzip $master.zip'); `enter code here`
13
задан raven 24 October 2008 в 17:26
поделиться

4 ответа

Я вполне уверен, необходимо сделать это твердый путь. В предыдущем моем задании у нас был очень изящный процесс обработки ошибок для VB6 с компонентами DCOM. Однако это был много избыточного кода, который должен был быть добавлен к каждому методу, так что мы произвели инструменты своими силами для вставки всего этого для Вас.

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

HTH

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

Действительно необходимо сделать это твердый путь, но это не действительно весь это трудно... Серьезно, как только Вы записали шаблон однажды, это - быстрое, копируют/вставляют/изменяют для соответствия имени функции в Допущении ошибку. Оператор повышения к фактическому имени функции.

Private Function DoSomething(ByVal Arg as String)

    On Error GoTo Handler

    Dim ThisVar as String
    Dim ThatVar as Long

    ' Code here to implement DoSomething...

    Exit Function

Handler:
    Err.Raise Err.Number, , "MiscFunctions.DoSomething: " & Err.Description

End Function

, Когда у Вас есть вложенные вызовы, это раскручивается, поскольку каждая стандартная программа поражает свой Обработчик и добавляет ее имя к описанию ошибки. В высокоуровневой функции Вы получаете "стек вызовов", показывающий список стандартных программ, которые назвали, и код ошибки и описание ошибки, которая на самом деле произошла. Это не прекрасно, в этом Вы не получаете номера строки, но я нашел, что Вам обычно не нужны они для нахождения пути к проблеме. (И если Вы действительно хотите номера строки, можно поместить их в функцию и сослаться на них в Допущении ошибку. Оператор повышения с помощью переменной Эрл. Без номеров строки, который просто возвращается 0.)

кроме того, обратите внимание, что в самой функции, можно повысить собственные ошибки со значениями интересных переменных в сообщении как так:

Err.Raise PCLOADLETTER_ERRNUM, , "PC Load Letter error on Printer """ & PrinterName & """"

(Подсветка синтаксиса смотрит wonky в предварительном просмотре... Интересно, как это посмотрит при регистрации?)

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

Твердым, ручным путем является в значительной степени единственный путь. Если Вы проверяете этот вопрос, кто-то предложил инструмент под названием MZTools, который сделает большую часть трудной работы для Вас.

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

Compuware (или было это Numega в то время) DevStudio для Visual Basic 6 раньше делал это. Путь был путем добавления добавляющий instrumenation к каждому вызову, который названный очень маленьким отрывком, который добавил к стопке кода. На любой ошибке это разгрузило тот стек вызовов и затем сделало вещи как почта или сообщение к веб-серверу вся отлаживающая информация. Добавление и удаление инструментария были потенциально смертельной операцией (особенно тогда, когда мы использовали VSS в качестве нашего управления исходным кодом), но если это работало, это работает хорошо.

Как Darrel указал , Вы могли добавить что-то очень simlar при помощи MZTools и установки шаблона. Это - большая работа и является, вероятно, большим количеством effeort, чем вознаграждение было бы всего лишь, если Вы имеете очень трудный разыскать ошибки, это могло бы помочь).

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

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