Gỡ lỗi từ xa Tomcat với Eclipse


95

Tôi dường như không thể gỡ lỗi ứng dụng tomcat thông qua Eclipse. Tôi đã đặt

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

và sau đó tôi chạy bin/catalina.sh, nơi tôi nhìn thấy đầu ra nói nó nghe cho dt_sockettrên port 8000. Nhưng bất cứ khi nào tôi cố gắng kết nối với cổng 8000trong Eclipse (bằng cách thêm một mục trong menu ứng dụng java từ xa), nó sẽ phàn nàn về kết nối bị từ chối. Bất kỳ ý tưởng?


bạn có thể vui lòng đăng cấu hình từ xa của bạn được sử dụng trong eclipse.
Sean

Câu trả lời:


133

Bạn có thể kiểm tra xem điều này có hiệu quả không?

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

catalina.sh jpda start

4
Trên thực tế, của bạn đã sửa nó. Eclipse thực sự không nói gì khi nó kết nối thành công và việc kết nối lại lần thứ hai sẽ dẫn đến lỗi. Vì vậy, nó đã hoạt động, nhưng tôi chỉ không nhận thấy.
người chiến thắng

18
Đây là đối với những người trong hệ điều hành Windows:set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n catalina.bat jpda start
Lee Chee kiam

1
Tùy chọn Susan = n làm gì?
Trismegistos

2
@Trismegistos. suspendchỉ định liệu jvm nên đợi trình gỡ lỗi hay tiếp tục. Xem tài liệu này .
Raghuram

9
Thực ra catalina.sh jpda startlà đủ. Catalina.sh có một JPDA_*số tham số có thể được sử dụng để thay đổi cổng, xem tệp để biết tài liệu.
zpon

53

Tôi đã dành một chút thời gian cho việc này để có được thông tin chính xác.

Vì vậy, đây là thông tin chi tiết từng bước.

Môi trường: Windows 7

Phiên bản TomCat: 7.0

IDE: Eclipse

Các cấu hình sẽ được thêm vào để bật gỡ lỗi từ xa trong tomcat là

-Xdebug
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

Tôi không khuyên bạn nên cấu hình trên môi trường không phải windows. Để thêm cấu hình trên, hãy nhấp đúp vào máy chủ tomcat sẽ có sẵn trong chế độ xem máy chủ. Tìm ảnh chụp màn hình bên dưới. nhập mô tả hình ảnh ở đây

Bây giờ thêm cấu hình môi trường thời gian chạy ở trên vào tomcat. Đối với điều này kiểm tra ảnh chụp màn hình bên dưới.

nhập mô tả hình ảnh ở đây

Bây giờ đến tab Arugment trong Chỉnh sửa thuộc tính cấu hình khởi chạy như hiển thị trong ảnh chụp màn hình bên dưới.

nhập mô tả hình ảnh ở đây

Phần đối số của GoTo VM thêm các dòng này.

-Xdebug

-agentlib: jdwp = transport = dt_socket, address = 8000, server = y, pause = n

nhập mô tả hình ảnh ở đây

Bây giờ có nút gỡ lỗi có sẵn trên thanh công cụ eclipse.

nhập mô tả hình ảnh ở đây

Trong Cấu hình gỡ lỗi, tìm "Ứng dụng Java từ xa" và nhấp đúp vào nó.nhập mô tả hình ảnh ở đây

Trong trường Tên, hãy nhập bất kỳ tên nào bạn muốn.

Từ trường dự án bằng cách sử dụng nút duyệt, hãy chọn dự án mà bạn muốn thực hiện gỡ lỗi từ xa.

Tên máy chủ không có gì khác ngoài địa chỉ máy chủ. Ở đây tôi đang làm việc cục bộ nên nó là "localhost".

Cuối cùng cột Cổng giá trị phải là 8000. Ngoài các trường văn bản Tên và Dự án, hai cột khác Máy chủ và cổng sẽ được điền bởi chính eclipse nếu không làm cho bạn có các giá trị giống như đã đề cập. Kiểm tra Ảnh chụp màn hình để biết thông tin.nhập mô tả hình ảnh ở đây

Bây giờ nhấp chuột phải vào TomcatServer trong bảng điều khiển máy chủ, chọn Thêm và Xóa khỏi menu ngữ cảnh. Từ hộp thoại này, bạn có thể thêm dự án vào máy chủ.

Bây giờ chạy máy chủ Tomcat.

nhập mô tả hình ảnh ở đây

Bây giờ chạy TomCatDebugConfiguration từ Công cụ gỡ lỗi.

Lần cuối cùng mở trình duyệt bên trong hoặc bên ngoài và chạy dự án của bạn. Nếu điều khiển thực thi đạt đến điểm ngắt thì nhật thực sẽ nhắc phối cảnh gỡ lỗi.


47

Trong thư mục bin tomcat nơi catalina.bathoặc .shđược tìm thấy (còn gọi là {CATALINA_BASE} / bin), hãy chỉnh sửa (tạo nếu không có):

setenv.bat/.sh

Thêm dòng sau:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

Đó là tất cả những gì bạn cần làm, bạn không cần phải chỉnh sửa catalina.bat(hoặc .sh) tệp.

Xem các bình luận trong catalina.bathoặc catalina.sh.

Bạn có thể phải điều chỉnh cú pháp cho môi trường / tình huống cụ thể của bạn. Ví dụ: nếu bạn đã xác định CATALINA_OPTS, bạn có thể làm điều gì đó như sau (trong môi trường windows):

set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n

Để gỡ lỗi từ Eclipse:

run-> Cấu hình gỡ lỗi ...-> Ứng dụng Java từ xa-> Mới

và chỉ định tên, dự án bạn đang gỡ lỗi, máy chủ lưu trữ tomcat và cổng gỡ lỗi được chỉ định ở trên.


Điều này đang hoạt động, bạn sẽ cần đặt CATALINA_OPTS này trong setenv.sh nằm trong thư mục tomcat / bin. Cảm ơn.
Amit Kumar

1
Trong setenv.bat của tôi, đó là JAVA_OPTS (tomcat 7)
vikingsteve

Xin chào Philip, đã thêm một số lưu ý có thể hữu ích, nếu không: bạn đang sử dụng phiên bản os, tomcat và eclipse nào?
karl

setenv.bat trong binthư mục đặt một dòng như set JPDA_OPTS= -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n, sử dụng startup.batđể bắt đầu tomcat
Paramvir Singh Karwal

33

Trong catalina.battệp xin vui lòng sửa đổi bên dưới.

  • Bước 1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

  • Bước 2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

  • Bước 3: Chạy Tomcat từ dấu nhắc lệnh như dưới đây: catalina.sh jpda start

  • Bước 4: Sau đó, trong nhật thực, tạo cấu hình gỡ lỗi

    1. Đặt tên bất kỳ cho cấu hình.
    2. Đưa ra project name.
    3. Cung cấp loại kết nối là Standard(Socket Attach)
    4. chủ nhà như localhost
    5. cổng như 8000(hoặc bất kỳ số cổng nào, nhưng ở những nơi khác cũng phải như vậy).

Tôi đã tìm thấy CATALINA_OPTS trong các phần sau đây tại catalina.bat,: doStop shift set ACTION = stop set CATALINA_OPTS = goto execCmd: doConfigTest shift set ACTION = configtest set CATALINA_OPTS = goto execCmd để chỉnh sửa nó ở đâu? Bạn có thể tải lên nội dung của catalina.bat không?
Gopakumar NG

Có vẻ như bạn đang viết cùng một điều hai lần. Tôi đã bỏ qua bước 1 của bạn - và nó hoạt động. Bạn có thể xác nhận không cần thay đổi CATALINA_OPTS không?
Henry Aloni

để biết sự khác biệt giữa xem CATALINA_OPTS & JPDA_OPTS, hãy xem: stackoverflow.com/questions/11222365/…
Mike R

1
Nó sẽ không hoạt động trong Tomcat 8. Để nó hoạt động trong Tomcat 8, bạn phải bỏ qua bước 1.
Dave

@RAJ. Nó hoạt động hoàn toàn trong Tomcat 6. Cảm ơn bạn rất nhiều.
T8Z

7

Nhiều câu trả lời ở trên là đúng, nhưng hãy nhớ rằng theo mặc định, trình gỡ lỗi sẽ chỉ lắng nghe trên localhost. Nếu bạn đang gỡ lỗi một máy chủ từ xa, bạn sẽ cần chỉ định địa chỉ ip để lắng nghe.

JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, address = 10.1.1.33 : 8000, server = y, pause = n"

catalina.sh jpda bắt đầu

Lưu ý rằng địa chỉ bây giờ là 10.1.1.33 : 8000

Tất nhiên, bạn cũng có thể kiểm tra IP nào thực sự đang được sử dụng, bằng cách chạy

netstat -an

trên cả windows và Linux và lọc ra cổng với find(Windows) hoặc grep(Linux).


Tôi nghĩ ý bạn là PORT nào thực sự đang được sử dụng chứ không phải IP nào .
Abdollah

1
Không, ý tôi là "địa chỉ IP". Nếu bạn thực hiện gỡ lỗi từ xa (từ một máy khác), bạn cần có thể chỉ định địa chỉ IP khác với localhost hoặc 127.0.0.1. Tất nhiên bạn cũng sẽ luôn cần số cổng.
DAB

5

Chỉ chạy ./catalina.sh jpda start( ./catalina.sh jpda runfork ) hoặc (không fork, không được đề cập trong trợ giúp). Tất cả các tùy chọn được đề cập ở đây mặc định thành các giá trị lành mạnh.


5

Hãy để tôi chia sẻ cách đơn giản để bật chế độ gỡ lỗi từ xa trong tomcat7 với eclipse (Windows).

Bước 1: Mở tệp bin / startup.bat
Bước 2: Thêm các dòng bên dưới để gỡ lỗi với tùy chọn JDPA (nó phải là dòng bắt đầu của tệp)

    set JPDA_ADDRESS=8000  
    set JPDA_TRANSPORT=dt_socket  

Bước 3: trong cùng một tệp .. đi đến cuối tệp, sửa đổi dòng này -

    call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%  
    instead of line  
    call "%EXECUTABLE%" start %CMD_LINE_ARGS%  

bước 4: sau đó chỉ cần chạy bin> startup.bat (vì vậy bây giờ máy chủ tomcat của bạn đã chạy ở chế độ từ xa với cổng 8000).

bước 5: sau đó cho phép kết nối dự án nguồn của bạn bằng IDE eclipse với ứng dụng khách từ xa.

bước 6: Trong IDE Eclipse, đi tới "cấu hình gỡ lỗi"

step7: nhấp vào "ứng dụng java từ xa" và nhấp vào "Mới"

bước 8. trong tab "kết nối" đặt giá trị tham số

   project= your source project  
   connection Type: standard (socket attached)   
   host: localhost  
   port:8000  

Bước 9: nhấp vào áp dụng và gỡ lỗi.

vì vậy cuối cùng ứng dụng khách từ xa eclipse của bạn đã được kết nối với máy chủ tomcat đang chạy (chế độ gỡ lỗi).

Hy vọng cách tiếp cận này có thể giúp ích cho bạn.

Trân trọng..


4

Sửa đổi catalina.bat để thêm

set JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n" 

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

Tùy chọn: Thêm dòng bên dưới để chạy chế độ gỡ lỗi theo mặc định khi bạn chạy startup.bat

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

Eclipse hoặc STS chọn cấu hình gỡ lỗi nhấp chuột phải -> mới

connection type -> Standard socket Attach
Port -> 8000 (as given in the CATALINA_OPTS)
Host -> localhost or IP address

Thông tin này dành cho WINDOWS, nhưng tôi chỉ tình cờ ở trên windows và vì vậy nó đã giúp tôi. Cảm ơn!
Đổ chuông vào

2

Nếu tất cả những điều trên vẫn không hoạt động, bạn luôn có thể thêm vào tập lệnh

    set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

2

Trong tomcat 7, catalina.sh có mã này:

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
  shift
fi

Ii ngụ ý rằng bạn có thể thiết lập JPDA với:

export JPDA_TRANSPORT=dt_socket
export JPDA_ADDRESS=8000
export JPDA_SUSPEND=n

Hoặc với:

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

Và cuối cùng sử dụng:

catalina.sh jpda start

Trân trọng


Tomcat 8: Các biến JPDA_ có thể được đặt trong setenv.sh mà không cần 'xuất' chúng. Trong mọi trường hợp, tham số đầu tiên của lệnh gọi khởi động phải là 'jpda'. Nếu bạn khởi động tomcat dưới dạng dịch vụ, tốt nhất là sửa đổi tập lệnh $ {CATALINA_HOME} /bin/startup.sh, thêm tham số 'jpda' vào dòng cuối cùng trước 'start': ´´exec "$ PRGDIR" / "$ EXECUTABLE "jpda start" $ @ "´´.
Heri

1

Tôi đã gặp sự cố này khi chạy Tomcat bên trong vùng chứa Docker. Để khắc phục điều này, hãy đảm bảo rằng bạn thêm đối số '-p 8000: 8000' trong lệnh chạy docker của bạn để hiển thị cổng này cho máy cục bộ của bạn. Tất nhiên, bạn cũng sẽ cần tệp setenv.sh trong $ {CATALINA_HOME} / bin / trong vùng chứa của bạn.


0

Sửa đổi startup.bat bằng CATALINA_OPTS VÀ JPDA_OPTS không hiệu quả với tôi nhưng việc thêm chúng vào catalina.bat đã làm được

  1. Sửa đổi catalina.bat

CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, address = 8000, server = y, pause = n"

JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, address = 8000, server = y, pause = n"

  1. Sửa đổi startup.bat để bao gồm jpda

thay đổi lệnh gọi "% EXECUTABLE%" start% CMD_LINE_ARGS% thành

gọi "% EXECUTABLE%" jpda start% CMD_LINE_ARGS%

Sau đó, định cấu hình ứng dụng java từ xa trong cấu hình gỡ lỗi của bạn trong Eclipse.


0

Trước hết, nếu bạn mở catalina.bat bằng trình soạn thảo văn bản, bạn thấy rằng: "Không đặt các biến trong tập lệnh này ....." Vì vậy, đừng bao giờ thay đổi nó trong tập lệnh đó, thay vào đó bạn có thể thực hiện các bước dưới đây:

  1. Nó khuyên bạn tạo một tệp dơi mới với tên "setenv.bat".
  2. Sau đó đặt 2 biến trong tệp bat đó như:

    đặt CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, address = 8000, server = y, pause = n"

    đặt JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, address = 8000, server = y, Susan = n"

  3. Cuối cùng chạy điều đó tại cmd rằng: "catalina.bat jpda start"

  4. Trong IDE, tạo cấu hình gỡ lỗi từ xa và đặt máy chủ lưu trữ thành ip và cổng máy chủ liên quan thành 8000.


0

Đối với phiên bản apache-tomcat-8.5.28 chỉ cần làm điều này,

catalina.bat jpda start

Như cài đặt mặc định đã được định cấu hình cho chúng tôi trong catalina.bat như

nếu không "% JPDA_OPTS%" == "" goto gotJpdaOpts set JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, address =% JPDA_ADDRESS%, server = y, pause =% JPDA_SUSPEND%

Vì vậy, không cần bất kỳ cấu hình nào khác. Và khi bạn thực hiện lệnh catalina.bat jpda start, bạn có thể thấy cổng gỡ lỗi 8000 được mở.



-2

Đối với apache-tomcat-8.5.28

sửa đổi JDPA_OPTSnhư bên dưới rồi chạy nhưcatalina.bat jpda start

JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=8000,server=y,suspend=$JPDA_SUSPEND"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.