Changeset 798 in dev for branches/egtra/ab5.0/abdev/BasicCompiler_Common/Debug.cpp
- Timestamp:
- Feb 5, 2011, 11:43:01 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/egtra/ab5.0/abdev/BasicCompiler_Common/Debug.cpp
r750 r798 9 9 #include "../BasicCompiler_Common/debug.h" 10 10 11 #include <Path.h> 12 #include <ProcessAndModule.h> 13 11 14 char *OpBuffer; 12 15 … … 14 17 15 18 HANDLE hDebugProcess; 19 DWORD processIdDebug; 16 20 17 21 DWORD _DebugSys_dwThreadID[MAX_DEBUG_THREAD]; … … 155 159 TerminateProcess(hDebugProcess,0); 156 160 hDebugProcess=0; 161 processIdDebug = 0; 157 162 158 163 //デバッグダイアログを終了 … … 435 440 if( program.IsAttach() ) 436 441 { 437 //プロセスIDを元にハンドルを取得 438 HANDLE hProcess; 439 hProcess=OpenProcess(PROCESS_ALL_ACCESS,0, program.GetAttachProcessId() ); 440 if(!hProcess) goto AttachError; 441 442 //そのプロセスにおける実行モジュールのインスタンスハンドルを取得 443 HINSTANCE hModule; 444 DWORD cbReturned; 445 if(!EnumProcessModules( hProcess, &hModule, sizeof(HINSTANCE), &cbReturned )) goto AttachError; 442 ////プロセスIDを元にハンドルを取得 443 //HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,0, program.GetAttachProcessId() ); 444 //if(!hProcess) 445 //{ 446 // DebugMessage("アタッチに失敗しました。"); 447 // return; 448 //} 449 450 ////そのプロセスにおける実行モジュールのインスタンスハンドルを取得 451 //HINSTANCE hModule; 452 //DWORD cbReturned; 453 //if(!EnumProcessModules( hProcess, &hModule, sizeof(HINSTANCE), &cbReturned )) 454 //{ 455 // DebugMessage("アタッチに失敗しました。"); 456 // return; 457 //} 446 458 447 459 //実行ファイル名を取得 448 char tempOutputFileName[MAX_PATH]; 449 GetModuleFileNameEx(hProcess,hModule,tempOutputFileName,MAX_PATH); 450 program.SetOutputFilePath( tempOutputFileName ); 451 452 CloseHandle(hProcess); 460 auto tempOutputFilePath = ActiveBasic::Common::GetExecutableModulePath(program.GetAttachProcessId()); 461 program.SetOutputFilePath( tempOutputFilePath.string().c_str() ); 462 463 //CloseHandle(hProcess); 453 464 454 465 /* … … 456 467 pobj_DebugSection->load(program.GetOutputFilePath().c_str());*/ 457 468 458 if(!DebugActiveProcess( program.GetAttachProcessId() )) {459 AttachError: 469 if(!DebugActiveProcess( program.GetAttachProcessId() )) 470 { 460 471 DebugMessage("アタッチに失敗しました。"); 461 472 return; … … 532 543 else{ 533 544 Attach_DllLoad: 534 //アタッチした場合 535 GetModuleFileNameEx(hDebugProcess,(HINSTANCE)de.u.LoadDll.lpBaseOfDll,temporary,MAX_PATH); 545 { 546 //アタッチした場合 547 auto path = ActiveBasic::Common::GetModuleFilePath(hDebugProcess, reinterpret_cast<HINSTANCE>(de.u.LoadDll.lpBaseOfDll)); 548 strncpy_s(temporary, path.string().c_str(), _TRUNCATE); 549 } 536 550 } 537 551 … … 562 576 hDebugProcess=de.u.CreateProcessInfo.hProcess; 563 577 hMainThread=de.u.CreateProcessInfo.hThread; 578 processIdDebug = de.dwProcessId; 564 579 565 580 if(debugSectionCollection.add((HMODULE)de.u.CreateProcessInfo.lpBaseOfImage)){
Note:
See TracChangeset
for help on using the changeset viewer.