У вас есть некоторые проблемы с попыткой отладки программы, которую я использую, и задался вопросом, может ли кто-нибудь помочь мне.
В текущей среде я запускаю Cassandra (v2), используя cqlsh (v3), который поставляется вместе с ней. Я вношу изменения в некоторые из его функциональных возможностей, а затем с помощью cqlsh проверять команды, чтобы увидеть, работают ли мои изменения в соответствии с назначением, или, если не так, как выглядит вход при прохождении программы. Я запускаю сеанс отладки (либо в затмении IntelJ, ни на что не имеет значения), запуская код сервера для приема соединений/ввода. Затем я загружаю cqlsh и задаю пространство ключей, которое я хочу использовать. Кажется, это работает нормально. Затем я выполняю строку cql для проверки моих изменений через командную строку. То, что я ожидаю увидеть, - это запись в командной строке, которая улавливается отладчиком в моей среде IDE, где я вижу, как ввод обрабатывается моими изменениями кода. То, что я вижу, ничего не происходит вообще, как будто никакая команда не была представлена.
Поэтому мои вопросы будут следующими:
1) Должен ли я видеть что-либо в моей среде отладки при выполнении команд, как описано выше? 2) Если нет, как бы вы отлаживали серверное приложение, имеющее эту конфигурацию, особенно в области обработки ввода пользователя? 3) Если да, то какие параметры следует проверить, чтобы проверить, правильно ли я настроен, или какие процессы следует выполнять для просмотра и отладки указанных представлений?
Я полагаю, что должен быть лучший способ, чтобы иметь 50 000 System.out.println() повсюду (при условии, что они даже работают), или, по крайней мере, я надеюсь, что есть.
Спасибо всем, кто читает это. Любые вопросы (которые, я уверен, могут быть, так как я, вероятно, не использую правильные дескрипторы), пожалуйста, спросите прочь.
У меня был успех в следующем подходе.
-g
(используйте как: javac -g
), чтобы включить генерацию всей отладочной информации.java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1414
, номер - это порт, к java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1414
вы подключаетесь), чтобы запустить сервер отладки. Обратите внимание, что вы можете отлаживать удаленный хост (отладчик будет подключаться с использованием имени hostname: port syntax). Вам не нужно вводить все это для Cassandra; вы можете просто раскомментировать соответствующую строку в cassandra-env.sh
(в Windows, посмотреть в bin/Cassandra.bat
или запустить Datastax distro в разделе реестра HKLM\SOFTWARE\[optionally Wow6432Node\]Apache Software Foundation\[Procrun node]\[Cassandra node]\Parameters\Java:Options
).В вашем случае, поскольку вы можете успешно определить пространство ключей, я считаю, что все работает, а затем происходит молчащий сбой при попытке сделать другие шаги, возможно, внесенные вашими изменениями. Чтобы подтвердить, я бы рекомендовал отменить все ваши изменения и сначала проверить настройку отладчика на чистой сборке.
Наконец, и это может быть излишним, CQLSH - это программа, написанная на Python, и выполняется отдельно от Cassandra в другом процессе. Поэтому вы не можете увидеть фактическую "запись в командной строке" из отладчика Java. Ближе всего вы можете добраться до вашего исходного ввода, поставив точки останова где-нибудь в пакете cql3
, чтобы увидеть, что инструкции CQL передаются (надеюсь). Конечно, вы можете использовать отладчик Python для отладки CQLSH, если это то, что вы хотите.