Cleanup debug reporting situation
This commit is contained in:
@@ -38,6 +38,7 @@ struct Process {
|
|||||||
bool is_valid;
|
bool is_valid;
|
||||||
int exit_code;
|
int exit_code;
|
||||||
char platform[6 * 8];
|
char platform[6 * 8];
|
||||||
|
int64_t id;
|
||||||
|
|
||||||
int64_t view_id; // text editor view
|
int64_t view_id; // text editor view
|
||||||
bool scroll_to_end;
|
bool scroll_to_end;
|
||||||
|
|||||||
@@ -216,15 +216,6 @@ FileIter IterateFiles(Allocator alo, String path) {
|
|||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
|
|
||||||
// struct Process {
|
|
||||||
// bool is_valid;
|
|
||||||
// int exit_code;
|
|
||||||
// char platform[6 * 8];
|
|
||||||
//
|
|
||||||
// int64_t view_id; // text editor view
|
|
||||||
// bool scroll_to_end;
|
|
||||||
// };
|
|
||||||
|
|
||||||
struct UnixProcess {
|
struct UnixProcess {
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int child_stdout_read;
|
int child_stdout_read;
|
||||||
@@ -262,9 +253,6 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
|
|||||||
const int PIPE_WRITE = 1;
|
const int PIPE_WRITE = 1;
|
||||||
bool error = false;
|
bool error = false;
|
||||||
|
|
||||||
printf("cmd = %.*s\n", FmtString(command_line));
|
|
||||||
printf("cwd = %.*s\n", FmtString(working_dir));
|
|
||||||
|
|
||||||
char *buffer = AllocArray(scratch, char, 4096);
|
char *buffer = AllocArray(scratch, char, 4096);
|
||||||
chdir(working_dir.data);
|
chdir(working_dir.data);
|
||||||
getcwd(buffer, 4096);
|
getcwd(buffer, 4096);
|
||||||
@@ -285,7 +273,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
|
|||||||
posix_spawn_file_actions_t actions = {};
|
posix_spawn_file_actions_t actions = {};
|
||||||
|
|
||||||
if (posix_spawn_file_actions_init(&actions) != 0) {
|
if (posix_spawn_file_actions_init(&actions) != 0) {
|
||||||
perror("posix_spawn_file_actions_init");
|
Error("Libc function failed: posix_spawn_file_actions_init, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
defer {
|
defer {
|
||||||
@@ -293,7 +281,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (pipe(stdout_desc) == -1) {
|
if (pipe(stdout_desc) == -1) {
|
||||||
perror("pipe");
|
Error("Libc function failed: pipe, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
defer {
|
defer {
|
||||||
@@ -306,7 +294,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (pipe(stdin_desc) == -1) {
|
if (pipe(stdin_desc) == -1) {
|
||||||
perror("pipe");
|
Error("Libc function failed: pipe, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
defer {
|
defer {
|
||||||
@@ -320,38 +308,38 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
|
|||||||
|
|
||||||
error = posix_spawn_file_actions_addclose(&actions, stdout_desc[PIPE_READ]) != 0;
|
error = posix_spawn_file_actions_addclose(&actions, stdout_desc[PIPE_READ]) != 0;
|
||||||
if (error) {
|
if (error) {
|
||||||
perror("posix_spawn_file_actions_addclose");
|
Error("Libc function failed: posix_spawn_file_actions_addclose, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = posix_spawn_file_actions_adddup2(&actions, stdout_desc[PIPE_WRITE], STDOUT_FILENO) != 0;
|
error = posix_spawn_file_actions_adddup2(&actions, stdout_desc[PIPE_WRITE], STDOUT_FILENO) != 0;
|
||||||
if (error) {
|
if (error) {
|
||||||
perror("posix_spawn_file_actions_adddup2 STDOUT_FILENO");
|
Error("Libc function failed: posix_spawn_file_actions_adddup2 STDOUT_FILENO, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = posix_spawn_file_actions_adddup2(&actions, stdout_desc[PIPE_WRITE], STDERR_FILENO) != 0;
|
error = posix_spawn_file_actions_adddup2(&actions, stdout_desc[PIPE_WRITE], STDERR_FILENO) != 0;
|
||||||
if (error) {
|
if (error) {
|
||||||
perror("posix_spawn_file_actions_adddup2 STDERR_FILENO");
|
Error("Libc function failed: posix_spawn_file_actions_adddup2 STDERR_FILENO, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = posix_spawn_file_actions_addclose(&actions, stdin_desc[PIPE_WRITE]) != 0;
|
error = posix_spawn_file_actions_addclose(&actions, stdin_desc[PIPE_WRITE]) != 0;
|
||||||
if (error) {
|
if (error) {
|
||||||
perror("posix_spawn_file_actions_addclose");
|
Error("Libc function failed: posix_spawn_file_actions_addclose, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = posix_spawn_file_actions_adddup2(&actions, stdin_desc[PIPE_READ], STDIN_FILENO) != 0;
|
error = posix_spawn_file_actions_adddup2(&actions, stdin_desc[PIPE_READ], STDIN_FILENO) != 0;
|
||||||
if (error) {
|
if (error) {
|
||||||
perror("posix_spawn_file_actions_adddup2 STDIN_FILENO");
|
Error("Libc function failed: posix_spawn_file_actions_adddup2 STDIN_FILENO, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
pid_t process_pid = 0;
|
pid_t process_pid = 0;
|
||||||
error = posix_spawnp(&process_pid, args[0], &actions, NULL, args.data, env.data) != 0;
|
error = posix_spawnp(&process_pid, args[0], &actions, NULL, args.data, env.data) != 0;
|
||||||
if (error) {
|
if (error) {
|
||||||
perror("failed to create process\n");
|
Error("Libc function failed: failed to create process\n, with error: %s", strerror(errno));
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,6 +353,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
|
|||||||
CloseStdin(&process);
|
CloseStdin(&process);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
process.id = process_pid;
|
||||||
process.is_valid = true;
|
process.is_valid = true;
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -418,6 +418,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
|
|||||||
|
|
||||||
p->handle = info.hProcess;
|
p->handle = info.hProcess;
|
||||||
process.is_valid = true;
|
process.is_valid = true;
|
||||||
|
process.id = (int64_t)p->handle;
|
||||||
|
|
||||||
if (write_stdin.len) {
|
if (write_stdin.len) {
|
||||||
WriteStdin(&process, write_stdin);
|
WriteStdin(&process, write_stdin);
|
||||||
|
|||||||
@@ -75,8 +75,9 @@ void EndFrameRender(float wx, float wy, Color color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ReportWarningf(const char *fmt, ...);
|
||||||
void GLDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *user) {
|
void GLDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *user) {
|
||||||
printf("%s", message);
|
ReportWarningf("OpenGL message: %s", message);
|
||||||
if (severity == GL_DEBUG_SEVERITY_HIGH || severity == GL_DEBUG_SEVERITY_MEDIUM) {
|
if (severity == GL_DEBUG_SEVERITY_HIGH || severity == GL_DEBUG_SEVERITY_MEDIUM) {
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "OpenGL error", message, NULL);
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "OpenGL error", message, NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,6 +223,14 @@ void ReportWarningf(const char *fmt, ...) {
|
|||||||
ActiveWindow = NullWindowID;
|
ActiveWindow = NullWindowID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ReportDebugf(const char *fmt, ...) {
|
||||||
|
Scratch scratch;
|
||||||
|
STRING_FORMAT(scratch, fmt, string);
|
||||||
|
Buffer *buffer = GetBuffer(DebugBufferID);
|
||||||
|
ReplaceWithoutMovingCarets(buffer, GetEndAsRange(buffer), ToString16(scratch, string));
|
||||||
|
ReplaceWithoutMovingCarets(buffer, GetEndAsRange(buffer), ToString16(scratch, "\n"));
|
||||||
|
}
|
||||||
|
|
||||||
void Command_MoveCursorsByPageSize(Window *window, int direction, bool shift = false) {
|
void Command_MoveCursorsByPageSize(Window *window, int direction, bool shift = false) {
|
||||||
Assert(direction == DIR_UP || direction == DIR_DOWN);
|
Assert(direction == DIR_UP || direction == DIR_DOWN);
|
||||||
BSet set = GetBSet(window);
|
BSet set = GetBSet(window);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ void UpdateProcesses() {
|
|||||||
Command_Append(view, poll, it.scroll_to_end);
|
Command_Append(view, poll, it.scroll_to_end);
|
||||||
}
|
}
|
||||||
if (!IsValid(&it)) {
|
if (!IsValid(&it)) {
|
||||||
printf("exit code = %d\n", it.exit_code);
|
ReportDebugf("process %lld exit code = %d", it.id, it.exit_code);
|
||||||
remove_item = true;
|
remove_item = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -30,6 +30,7 @@ void UpdateProcesses() {
|
|||||||
|
|
||||||
void Exec(ViewID view, bool scroll_to_end, String cmd, String working_dir) {
|
void Exec(ViewID view, bool scroll_to_end, String cmd, String working_dir) {
|
||||||
Process process = SpawnProcess(cmd, working_dir, {}, Enviroment);
|
Process process = SpawnProcess(cmd, working_dir, {}, Enviroment);
|
||||||
|
ReportDebugf("process %lld start. is_valid = %d cmd = %.*s working_dir = %.*s", process.id, process.is_valid, FmtString(cmd), FmtString(working_dir));
|
||||||
process.view_id = view.id;
|
process.view_id = view.id;
|
||||||
process.scroll_to_end = scroll_to_end;
|
process.scroll_to_end = scroll_to_end;
|
||||||
if (process.is_valid) Add(&ActiveProcesses, process);
|
if (process.is_valid) Add(&ActiveProcesses, process);
|
||||||
@@ -42,6 +43,8 @@ void Exec(ViewID view, bool scroll_to_end, String16 cmd16, String working_dir) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Buffer *ExecAndWait(Allocator allocator, String cmd, String working_dir, String stdin_string = {}) {
|
Buffer *ExecAndWait(Allocator allocator, String cmd, String working_dir, String stdin_string = {}) {
|
||||||
|
ReportDebugf("ExecAndWait cmd = %.*s working_dir = %.*s stdin_string = %.*s", FmtString(cmd), FmtString(working_dir), FmtString(stdin_string));
|
||||||
|
|
||||||
Buffer *temp_buffer = CreateTempBuffer(allocator, 4096 * 4);
|
Buffer *temp_buffer = CreateTempBuffer(allocator, 4096 * 4);
|
||||||
for (Process process = SpawnProcess(cmd, working_dir, stdin_string, Enviroment); IsValid(&process);) {
|
for (Process process = SpawnProcess(cmd, working_dir, stdin_string, Enviroment); IsValid(&process);) {
|
||||||
Scratch scratch(allocator);
|
Scratch scratch(allocator);
|
||||||
|
|||||||
@@ -239,7 +239,6 @@ void Update(Event event) {
|
|||||||
UpdateCo(&event);
|
UpdateCo(&event);
|
||||||
ReloadLuaConfigs();
|
ReloadLuaConfigs();
|
||||||
CallLuaOnUpdate(&event);
|
CallLuaOnUpdate(&event);
|
||||||
UpdateDebugBuffer();
|
|
||||||
GarbageCollect();
|
GarbageCollect();
|
||||||
|
|
||||||
For(IterateInReverse(&order)) {
|
For(IterateInReverse(&order)) {
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ Array<Edit> Command_ReplaceEx(Allocator scratch, View *view, String16 string);
|
|||||||
void Command_Eval(String string);
|
void Command_Eval(String string);
|
||||||
void Command_Eval(String16 string);
|
void Command_Eval(String16 string);
|
||||||
String Command_GetMainDir();
|
String Command_GetMainDir();
|
||||||
|
void ReportDebugf(const char *fmt, ...);
|
||||||
|
|
||||||
void ReplaceWithoutMovingCarets(Buffer *buffer, Range range, String16 string);
|
void ReplaceWithoutMovingCarets(Buffer *buffer, Range range, String16 string);
|
||||||
void Command_Copy(View *view);
|
void Command_Copy(View *view);
|
||||||
|
|||||||
@@ -1,28 +1,20 @@
|
|||||||
|
FEATURE SaveAll dirty files which are saved on disk already but dirty
|
||||||
DESIGN Config file versions, when loading should be checked, at the top of the file, what to do when old version?
|
DESIGN Config file versions, when loading should be checked, at the top of the file, what to do when old version?
|
||||||
|
|
||||||
ISSUE Ctrl+Alt+Down (DuplicateLine) doesn't work on ubuntu
|
ISSUE Ctrl+Alt+Down (DuplicateLine) doesn't work on ubuntu
|
||||||
DESIGN Add debug buffer that will hold info on exit codes and other debug information
|
|
||||||
|
|
||||||
DESIGN Moving vertically between splits, which keys???
|
DESIGN Moving vertically between splits, which keys???
|
||||||
DESIGN Console, when writing commands and evaling in console it should properly insert a new line after our thing when writing on last line
|
DESIGN Console, when writing commands and evaling in console it should properly insert a new line after our thing when writing on last line
|
||||||
DESIGN The cursor hopping history needs a bit of fixing, probably needs to be more complicated with collapsing commands
|
DESIGN The cursor hopping history needs a bit of fixing, probably needs to be more complicated with collapsing commands
|
||||||
FEATURE KillConsole, or maybe some window targetting but how??
|
FEATURE KillConsole, or maybe some window targetting but how??
|
||||||
FEATURE SaveAll dirty files which are saved on disk already but dirty
|
|
||||||
|
|
||||||
ISSUE I hit a case where GC tried deleting a buffer which was not attached to the buffer list, it had zeroed next, prev. It happened after iterating through directories using the ctrl + period
|
ISSUE I hit a case where GC tried deleting a buffer which was not attached to the buffer list, it had zeroed next, prev. It happened after iterating through directories using the ctrl + period
|
||||||
|
|
||||||
FEATURE Search whole words, case sensitive etc.
|
FEATURE Search whole words, case sensitive etc.
|
||||||
FEATURE Select all searched occurences
|
FEATURE Select all searched occurences
|
||||||
DESIGN Indicate maybe on the console border that a process is running in the console! also maybe exit code when exits
|
DESIGN Indicate maybe on the console border that a process is running in the console! also maybe exit code when exits
|
||||||
|
PLATFORM Fix windows build
|
||||||
- Add metaprogram?
|
|
||||||
- PLATFORM Fix windows build
|
|
||||||
|
|
||||||
- Changing window properties by changing the window name?
|
- Changing window properties by changing the window name?
|
||||||
- commands for scrolling: center, cursor_at_bottom_of_screen, cursor_at_top
|
- commands for scrolling: center, cursor_at_bottom_of_screen, cursor_at_top
|
||||||
- Add metadata to Lua bindings so that we would get a better listing (function args?, what else?)
|
- Add metadata to Lua bindings so that we would get a better listing (function args?, what else?)
|
||||||
- Kill buffer command (it should be marked for deletion and deleted at the end of frame!)
|
- Kill buffer command (it should be marked for deletion and deleted at the end of frame!)
|
||||||
- Save all command
|
|
||||||
- Delete directory/file on disk command
|
- Delete directory/file on disk command
|
||||||
- Check. Convert more commands to taking buffer instead of view
|
- Check. Convert more commands to taking buffer instead of view
|
||||||
- Check. Rewrite more commands to use already implemented commands?
|
- Check. Rewrite more commands to use already implemented commands?
|
||||||
|
|||||||
Reference in New Issue
Block a user