-
Notifications
You must be signed in to change notification settings - Fork 11
/
OsxDebugger.cc
57 lines (49 loc) · 1.58 KB
/
OsxDebugger.cc
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
54
55
56
57
//
// Copyright (C) University College London, 2007-2012, all rights reserved.
//
// This file is part of HemeLB and is CONFIDENTIAL. You may not work
// with, install, use, duplicate, modify, redistribute or share this
// file, or any part thereof, other than as allowed by any agreement
// specifically made by you with University College London.
//
#include <string>
#include "debug/OSX/OsxDebugger.h"
#include <mach-o/dyld.h>
namespace hemelb
{
namespace debug
{
OsxDebugger::OsxDebugger(const char* const executable, const net::MpiCommunicator& comm) :
ActiveDebugger(executable, comm)
{
}
const std::string OsxDebugger::GetBinaryPath(void) const
{
char* path = NULL;
uint32_t size = 0;
_NSGetExecutablePath(path, &size);
path = new char[size];
int ret = _NSGetExecutablePath(path, &size);
if (ret != 0)
// error
throw Exception() << "Error getting executable path.";
std::string ans(path, size);
delete[] path;
return ans;
}
const std::string OsxDebugger::GetPlatformInterpreter(void) const
{
return std::string("osascript");
}
const std::string OsxDebugger::GetPlatformScript(void) const
{
std::string include(__FILE__);
std::string debugOsxDir = include.substr(0, include.rfind('/'));
return debugOsxDir + "/MPIdebug.applescript";
}
Debugger* PlatformDebuggerFactory(const char * const executable, const net::MpiCommunicator& comm)
{
return new OsxDebugger(executable, comm);
}
} // namespace debug
} // namespace hemelb