| 1 | #include "attach.h" |
| 2 | #include "dylib.h" |
| 3 | #include <cassert> |
| 4 | #include <chrono> |
| 5 | #include <cstdio> |
| 6 | #include <fstream> |
| 7 | #include <thread> |
| 8 | |
| 9 | int main(int argc, char* argv[]) { |
| 10 | lldb_enable_attach(); |
| 11 | std::ofstream(argv[1]).close(); |
| 12 | |
| 13 | // Wait until debugger is attached. |
| 14 | int main_thread_continue = 0; |
| 15 | int i = 0; |
| 16 | int timeout = 10; |
| 17 | for (i = 0; i < timeout; i++) { |
| 18 | std::this_thread::sleep_for(rtime: std::chrono::seconds(1)); // break here |
| 19 | if (main_thread_continue) { |
| 20 | break; |
| 21 | } |
| 22 | } |
| 23 | assert(i != timeout && "timed out waiting for debugger" ); |
| 24 | |
| 25 | // dlopen the 'liblib_b.so' shared library. |
| 26 | void* dylib_handle = dylib_open("lib_b" ); |
| 27 | assert(dylib_handle && "dlopen failed" ); |
| 28 | |
| 29 | return i; // break after dlopen |
| 30 | } |
| 31 | |