簡體   English   中英

使用Eclipse調試JNI / C ++庫和進程

[英]Using Eclipse to debug a JNI / C++ library and processes

我很難理解如何調試我的C ++代碼和相關的派生Java進程。 我有C ++代碼派生出一個.jar SWING文件。 這將打開一個Java窗口,並等待用戶輸入...

我創建了一個C ++ Eclipse項目,該項目成功地編譯了C ++和Java源代碼。 兩種編譯都使用-g編譯器標志。 但是,當我在調試模式下運行時,我只能逐步執行初始的C ++代碼。 在fork語句(啟動JAVA SWING代碼)之后,我無法單步執行Java代碼。 下一步直接進入fork語句。 我正在使用JNI調用來調用在編譯時創建的C ++共享庫。

我讀過其他有關人們啟動Java應用程序的文章,這些人隨后通過JNI調用來調用C ++。 但是我正相反。 我從我的C ++代碼開始,然后派生一個Java進程。

無論哪種方式,我似乎都需要以某種方式將派生的Java進程附加到當前的C ++ eclipse調試會話。 我該怎么做? 一個簡單的例子將不勝感激。

您必須使用Java調試的命令行選項在C ++中創建Java VM。 要使用偵聽器運行Java進行調試,請傳遞以下選項(如果端口8000不空閑,則可以選擇其他地址)

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

然后,在Eclipse調試對話框中,創建一個“遠程Java應用程序”。 在“連接屬性”的“端口”字段中的選項中使用地址(默認為8000)。 在Java代碼中設置一些斷點,然后按“調試”。 如果需要調試Java啟動時發生的代碼,則可以在選項中使用suspend=y ,然后VM將在啟動之前等待調試器的連接。

如果您無法更改Java進程的選項,那么您將很不走運。

編輯:文檔http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html告訴我-Xrun現在是-agentlib 不知道那是因為我多年來一直在使用上述選項,而且它們還沒有停止工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM