I have an mpi program and managed to compile and link it via Xcode 4. Now I want to debug it using Xcode 4.
How can I pipe the standard input to the program from a f
Not wanting to awaken zombies, but this is still the top search result for the question.
I've managed to get this working in XCode 9.2 - but it should be backwards compatible. It uses a subshell and sleep in a pre-action script. This will pipe from a file and stick cout to a file, and supports breakpoints.
(1) Add the following preaction.sh script into your project.
#!/bin/sh
exec > ${PROJECT_DIR}/tests/result.log 2>&1
(
sleep 1
${TARGET_BUILD_DIR}/${EXECUTABLE_NAME} < ${PROJECT_DIR}/tests/file
)&
(2) Then add it to your pre-actions on the Run menu.
(3) Ensure your run Waits for executable to be launched.
(4) Turn off code signing for your target!
Otherwise you will get an error "Message from debugger: unable to attach"
(5) Set breakpoints and run from Xcode as normal
That's all there is to it. The entire trick rests on getting the pre-action script to spawn off a sub-shell that itself delays the process until the run action is launched.