Есть ли какой-либо путь в Java для входа *каждый* прерывание Потока?

Вы неправильно передали параметры в функцию mysqli_real_escape_string (), прежде чем вставлять сообщение, вы должны поместить строку подключения, с которой вы получаете доступ к БД.

$connection=mysqli_connect("localhost","USER","PASSWORD","DB");
$nomeCantiere= mysqli_real_escape_string($connection, 

Вы неправильно передали параметры в функцию mysqli_real_escape_string (), прежде чем вставлять сообщение, вы должны поместить строку подключения, с которой вы получаете доступ к БД.

[110]

ваша вторая попытка неверна, повторно использует мою строку кода во первых .. во время поста

POST['nomeCantiere']);

ваша вторая попытка неверна, повторно использует мою строку кода во первых .. во время поста

6
задан Eddie 28 April 2009 в 17:25
поделиться

5 ответов

Как быстрый взлом это было намного легче сделать, чем я думал. Так как это быстрый взлом, я не перед тем как разыменовать массив, убедитесь, что трассировка стека достаточно глубока и т. д. Я вставил в конструктор моего подписанного апплета следующее:

log.info("Old security manager = " + System.getSecurityManager());
System.setSecurityManager(new SecurityManager() {
      @Override
      public void checkAccess(final Thread t) {
        StackTraceElement[] list = Thread.currentThread().getStackTrace();
        StackTraceElement element = list[3];
        if (element.getMethodName().equals("interrupt")) {
          log.info("CheckAccess to interrupt(Thread = " + t.getName() + ") - "
                   + element.getMethodName());
          dumpThreadStack(Thread.currentThread());
        }
        super.checkAccess(t);
      }
    });

и метод dumpThreadStack выглядит следующим образом:

public static void dumpThreadStack(final Thread thread) {
  StringBuilder builder = new StringBuilder('\n');
  try {
    for (StackTraceElement element : thread.getStackTrace()) {
      builder.append(element.toString()).append('\n');
    }
  } catch (SecurityException e) { /* ignore */ }
  log.info(builder.toString());
}

I Конечно, никогда не мог оставить это в рабочем коде, но мне было достаточно точно сказать, какой поток вызывал прерывание () , которого я не ожидал. То есть с этим кодом я получаю дамп стека для каждого вызова Thread.interrupt () .

но мне было достаточно точно сказать, какой поток вызывал прерывание () , которого я не ожидал. То есть с этим кодом я получаю дамп стека для каждого вызова Thread.interrupt () .

но мне было достаточно точно сказать, какой поток вызывал прерывание () , которого я не ожидал. То есть с этим кодом я получаю дамп стека для каждого вызова Thread.interrupt () .

10
ответ дан 8 December 2019 в 13:49
поделиться

Я хотел бы взглянуть на AspectJ и его возможности для переноса вызовов методов. Здесь может помочь точка выполнения вокруг метода interrupt () .

Обратите внимание, что поскольку вы пытаетесь перехватить вызов системного метода Java (в отличие от кода вашего приложения) вышеуказанное может не подходить. Эта ветка , кажется, предполагает, что это возможно, но обратите внимание, что он создал тканый rt.jar.

2
ответ дан 8 December 2019 в 13:49
поделиться

Прежде чем пытаться что-то слишком дикое, рассматривали ли вы вопрос об использовании API отладки Java ? Я думаю, что захват метода MethodEntryEvents в Thread.interrupt () сделает это.

Да, это старый интерфейс, вы также должны проверить новый интерфейс JVM Tool .

4
ответ дан 8 December 2019 в 13:49
поделиться

Как уже говорили другие ... Если это единоразово, JVMTI, вероятно, является наиболее жестким путем. Тем не менее, также интересно использовать библиотеку asm и API инструментария для создания агента, который вставляет вызов статическому методу, созданному вами непосредственно перед вызовом Thread.interrupt () (или, возможно, изменяет Thread.interrupt ( ) способ сделать то же самое, я думаю, что вы можете сделать это).

Обе занимают некоторое время, чтобы учиться, но с ним довольно весело работать, и как только вы овладеете им, вы можете использовать их для самых разных забавных вещей в будущем :-) У меня нет хороших фрагментов для вставки прямо сейчас, но если вы посмотрите на ASM и, возможно, посмотрите на JIP для творческого использования ASM, я думаю, вы найдете вдохновение.

JIP: Java Interactive Profiler

1
ответ дан 8 December 2019 в 13:49
поделиться

You could try also with JMX:

ManagementFactory.getThreadMXBean().getThreadInfo(aThreadID)

with the ThreadInfo object you can log:

  • the stack trace of the thread
  • general userful information like name, status, etc
  • etc

EDIT

use getAllThreadIds() in order to obtain the list of live thread ids:

long[] ids = ManagementFactory.getThreadMXBean().getAllThreadIds();
0
ответ дан 8 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

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