2010-06-16 5 views
3

Я профилирую приложение с btrace и столкнулся с ограничением. Я пытаюсь получить имя текущего java.lang.Thread. Нормальный, вы можете позвонить getName(), но это запрещено в btrace-скриптах (исключение любых вызовов BTraceUtils).
Есть ли идеи, как получить String от char[]?Преобразование char [] в строку в BTrace

Исходная задача - проверить, содержит ли имя потока подстроку и только затем выводить информацию о трассировке (уменьшая выход).

+0

Я не знаю btrace, но можно просто использовать 'новый String (charArray)' в вашем случае? –

+0

как chris_l Я не знаю btrace, но могу ли вы создать строковую переменную, перебрать через char [] и добавить каждый символ в строку – Kyra

+0

, что является проблемой - никакого создания нового объекта не было. – Max

ответ

1

просто использовать "встроенный" функция имя (резьба) из BTraceUtils. Одним из типов, которые он принимает в качестве аргумента, является Thread и он возвращает имя потока. Также есть threadId (thread) Функция, которая возвращает идентификатор потока.

Вы можете найти много полезной функции в классе BTraceUtils - ознакомьтесь с online javadoc.

Приветствия,

JB

+0

Спасибо JB! Это действительно помогает мне. – Max

3

Некоторая информация, которая может быть полезна другим:

https://btrace.dev.java.net/source/browse/btrace/docs/usersguide.html?rev=1.7

В частности, класс BTrace

  • не может создавать новые объекты.
  • не может создавать новые массивы.
  • не может выбрасывать исключения.
  • не может поймать исключения.
  • не может совершать вызовы произвольного экземпляра или статического метода - только публичные статические методы com.sun.btrace. Класс BTraceUtils может быть вызван из программы BTrace.
  • не может назначать статические или экземпляры полей целевых программ и объектов. Но класс BTrace может назначить своим собственным статическим полям («трассировка состояние» может быть изменена).
  • не может иметь экземпляров полей и методов. Разрешены только методы static public void для класса BTrace . И все поля должны быть быть статическими.
  • не может иметь внешние, внутренние, вложенные или локальные классы.
  • не может иметь синхронизированные блоки или синхронизированные методы.
  • не может иметь петли (для, в то время, do..while)
  • не может простираться произвольный класс (супер класс должен быть java.lang.Object)
  • не могут реализовывать интерфейсы.
  • не может содержать утверждения assert.
  • не может использовать класс литералов.

http://btrace.kenai.com/javadoc/1.1/com/sun/btrace/BTraceUtils.html

Смежные вопросы