Mercurial > hg > Members > aka > jupyter_CbC_kernel
comparison c_kernel/kernel.py @ 3:8ddfdd2a8574
Add retcode to stderr to make errors such as segfaults visible
author | Brendan Rius <brendan@omixy.com> |
---|---|
date | Fri, 25 Mar 2016 14:13:22 +0000 |
parents | b46b2e5b6c08 |
children | 5c4b5066fab0 |
comparison
equal
deleted
inserted
replaced
2:b46b2e5b6c08 | 3:8ddfdd2a8574 |
---|---|
51 with self.new_temp_file(suffix='.c') as source_file: | 51 with self.new_temp_file(suffix='.c') as source_file: |
52 source_file.write(code) | 52 source_file.write(code) |
53 source_file.flush() | 53 source_file.flush() |
54 with self.new_temp_file(suffix='.out') as binary_file: | 54 with self.new_temp_file(suffix='.out') as binary_file: |
55 retcode, stdout, stderr = self.compile_with_gcc(source_file.name, binary_file.name) | 55 retcode, stdout, stderr = self.compile_with_gcc(source_file.name, binary_file.name) |
56 self.log.error(retcode) | 56 if retcode != 0: |
57 self.log.error(stdout) | 57 stderr += "[C kernel] GCC exited with code {}".format(retcode) |
58 self.log.error(stderr) | 58 self.log.error("GCC return code: {}".format(retcode)) |
59 self.log.error("GCC stdout: {}".format(stdout)) | |
60 self.log.error("GCC stderr: {}".format(stderr)) | |
59 | 61 |
60 retcode, out, err = CKernel.execute_command([binary_file.name]) | 62 retcode, out, err = CKernel.execute_command([binary_file.name]) |
63 if retcode != 0: | |
64 stderr += "[C kernel] Executable exited with code {}".format(retcode) | |
65 self.log.error("Executable retcode: {}".format(retcode)) | |
66 self.log.error("Executable stdout: {}".format(out)) | |
67 self.log.error("Executable stderr: {}".format(err)) | |
61 stdout += out | 68 stdout += out |
62 stderr += err | 69 stderr += err |
63 self.log.error(retcode) | |
64 self.log.error(out) | |
65 self.log.error(err) | |
66 | 70 |
67 if not silent: | 71 if not silent: |
68 stream_content = {'name': 'stderr', 'text': stderr} | 72 stream_content = {'name': 'stderr', 'text': stderr} |
69 self.send_response(self.iopub_socket, 'stream', stream_content) | 73 self.send_response(self.iopub_socket, 'stream', stream_content) |
70 stream_content = {'name': 'stdout', 'text': stdout} | 74 stream_content = {'name': 'stdout', 'text': stdout} |