CString elfname;
CString cmdline;
CString outfile;
STARTUPINFO startupinfo;
HANDLE houtputfile;
char buffer[100];
PROCESS_INFORMATION pinfo;
CDebugTombstoneDlg * pthis = (CDebugTombstoneDlg *) lpParameter;
int itemID = pthis->m_linenum;
pthis->m_list.GetItemText(itemID, 1, buffer, 100);
elfname.Insert(0, buffer);
cmdline += "arm-linux-androideabi-objdump.exe -C -D -S ";
elfname.Replace("/","\\");
cmdline += pthis->m_sympath;
cmdline += elfname;
startupinfo.cb=sizeof(STARTUPINFO);
GetStartupInfo(&startupinfo);
startupinfo.dwFlags=STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
startupinfo.wShowWindow=SW_HIDE;
SECURITY_ATTRIBUTES psa={sizeof(psa),NULL,TRUE};;
psa.bInheritHandle=TRUE;
outfile += pthis->m_sympath;
outfile += "\\";
outfile += "output";
outfile += itemID + 48;
outfile += ".txt";
houtputfile = CreateFile((LPSTR)(LPCTSTR)outfile, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, &psa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
startupinfo.hStdOutput = houtputfile;
startupinfo.hStdInput = houtputfile;
startupinfo.hStdError = houtputfile;
if(houtputfile == INVALID_HANDLE_VALUE){
AfxMessageBox("Create file Error!");
return GetLastError();
}
if(!CreateProcess(NULL, (LPSTR)(LPCTSTR)cmdline, NULL, NULL, TRUE, NULL, NULL, NULL, &startupinfo, &pinfo))
{
return GetLastError();
}
WaitForSingleObject(pinfo.hProcess, 120 * 1000);
TerminateProcess(pinfo.hProcess, 1);
CloseHandle(houtputfile);
return 0;