Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI / 8 сообщений из 8, страница 1 из 1
31.07.2018, 17:33
    #39681691
ASukhov1986
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Здравствуйте, у меня такая ситуация:
У меня есть программа (далее JavaProject4), написанная на Java.
Также у меня есть библиотека (jninet), написанная на VC++.
Связь между JavaProject4 и jninet реализовано с помощью технологии JNI.
Часть кода JavaProject4, в котором реализуется вызов метода jninet, приведен ниже:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
private native void LoadSyncManagerConfiguration(String sFilePath, int host);

  public void InitExternModules(boolean loadSyncManager) throws Exception
  {
    String curdir = System.getProperty("user.dir");
    curdir += System.getProperty("file.separator");
    String FileName = curdir + "jninet.dll";

    try {
      System.load(FileName);
    }
    catch(UnsatisfiedLinkError le) {
      throw new Exception("File not found: "+le.getMessage());
    }

    if (loadSyncManager) {
      try {
        LoadSyncManagerConfiguration(curdir + ConfigDirFile, iHostType);
      }
      catch (UnsatisfiedLinkError le) {
        throw new Exception("Method not found: " + le.getMessage());
      }
      SyncManagerLoaded = true;
    }

    ExternModulesLoaded = true;
  }
...
Рейтинг: 0 / 0
31.07.2018, 17:35
    #39681692
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Вы в форуме по Java спрашиваете как дебажить VC++ dll?
...
Рейтинг: 0 / 0
31.07.2018, 17:38
    #39681694
ASukhov1986
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Продолжение...

В jninet метод LoadSyncManagerConfiguration реализован следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
#include "stdafx.h"
#include "jninet.h"

using namespace System;
using namespace System::Threading;
using namespace jninet;

#using "SyncManager.dll"
using namespace SyncManager;
using namespace SyncManager::EMail;
#using "ReplUtils.dll"
using namespace ReplUtils;
#using "DataTransferCore.dll"
using namespace DataTransferCore;

extern "C" {

JNIEXPORT void JNICALL Java_replicant_ConfigCtrl_LoadSyncManagerConfiguration
  (JNIEnv *env, jobject, jstring FilePath, jint ihost_type)
{ 
	const char *sFile = NULL;

	try {
		HostType ht;
		sFile = env->GetStringUTFChars(FilePath, NULL);
		switch (ihost_type)
		{
		case 1: ht = HostType::Center; break;
		case 2: ht = HostType::CenterFil; break;
		case 3: ht = HostType::Csm; break;
		case 4: ht = HostType::Filial; break;
		default: throw new Exception(S"LoadSyncManagerConfiguration: Invalid host type");
		}
		Config::Load(CJniNet::UTFCharsToString(sFile), ht);
		env->ReleaseStringUTFChars(FilePath, sFile);
		sFile = NULL;
	}
	catch (Exception *ex)
	{
		if (sFile != NULL)
			env->ReleaseStringUTFChars(FilePath, sFile);

		char buf[256];
		jclass excl = env->FindClass("java/lang/Exception");
		if (excl != NULL)
		{
			CJniNet::GetCharString(buf, ex->Message, 256);
			env->ThrowNew(excl, buf);
		}
	}
}
...
}



У меня возникает вопрос : как мне выполнить отладку кода на VC++ при отладки JAVA?
...
Рейтинг: 0 / 0
31.07.2018, 17:38
    #39681695
ASukhov1986
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Blazkowicz,

случайно нажал на опубликовал
...
Рейтинг: 0 / 0
31.07.2018, 17:40
    #39681696
ASukhov1986
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
ASukhov1986,

я работаю в ОС Windows 7, среда разработки JAVA это Netbeans 8.2, среда разработки VC++ Visual Studio 2008
...
Рейтинг: 0 / 0
31.07.2018, 17:44
    #39681698
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Лично мне запрос " отладка jni dll " второй ссылкой выдаёт статью по отладке в комбинации "netbeans и visual c++ 2008".
...
Рейтинг: 0 / 0
31.07.2018, 17:47
    #39681701
ASukhov1986
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Basil A. Sidorov, гляну
...
Рейтинг: 0 / 0
31.07.2018, 18:44
    #39681725
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Так же, как любые другие DLL.

Запустить приложение (java) дождаться загрузки DLL, отладчиком MSVC подключиться к запущенному приложению, поставить брейкпоинты в DLL.

IMHO & AFAIK
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]