Cleanup debug reporting situation

This commit is contained in:
2025-08-21 08:46:58 +02:00
parent 48574d634c
commit 8408f400c8
9 changed files with 29 additions and 34 deletions

View File

@@ -38,6 +38,7 @@ struct Process {
bool is_valid;
int exit_code;
char platform[6 * 8];
int64_t id;
int64_t view_id; // text editor view
bool scroll_to_end;

View File

@@ -216,15 +216,6 @@ FileIter IterateFiles(Allocator alo, String path) {
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 {
pid_t pid;
int child_stdout_read;
@@ -262,9 +253,6 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
const int PIPE_WRITE = 1;
bool error = false;
printf("cmd = %.*s\n", FmtString(command_line));
printf("cwd = %.*s\n", FmtString(working_dir));
char *buffer = AllocArray(scratch, char, 4096);
chdir(working_dir.data);
getcwd(buffer, 4096);
@@ -285,7 +273,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
posix_spawn_file_actions_t actions = {};
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;
}
defer {
@@ -293,7 +281,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
};
if (pipe(stdout_desc) == -1) {
perror("pipe");
Error("Libc function failed: pipe, with error: %s", strerror(errno));
return process;
}
defer {
@@ -306,7 +294,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
};
if (pipe(stdin_desc) == -1) {
perror("pipe");
Error("Libc function failed: pipe, with error: %s", strerror(errno));
return process;
}
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;
if (error) {
perror("posix_spawn_file_actions_addclose");
Error("Libc function failed: posix_spawn_file_actions_addclose, with error: %s", strerror(errno));
return process;
}
error = posix_spawn_file_actions_adddup2(&actions, stdout_desc[PIPE_WRITE], STDOUT_FILENO) != 0;
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;
}
error = posix_spawn_file_actions_adddup2(&actions, stdout_desc[PIPE_WRITE], STDERR_FILENO) != 0;
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;
}
error = posix_spawn_file_actions_addclose(&actions, stdin_desc[PIPE_WRITE]) != 0;
if (error) {
perror("posix_spawn_file_actions_addclose");
Error("Libc function failed: posix_spawn_file_actions_addclose, with error: %s", strerror(errno));
return process;
}
error = posix_spawn_file_actions_adddup2(&actions, stdin_desc[PIPE_READ], STDIN_FILENO) != 0;
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;
}
pid_t process_pid = 0;
error = posix_spawnp(&process_pid, args[0], &actions, NULL, args.data, env.data) != 0;
if (error) {
perror("failed to create process\n");
Error("Libc function failed: failed to create process\n, with error: %s", strerror(errno));
return process;
}
@@ -365,6 +353,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
CloseStdin(&process);
}
process.id = process_pid;
process.is_valid = true;
return process;
}

View File

@@ -418,6 +418,7 @@ Process SpawnProcess(String command_line, String working_dir, String write_stdin
p->handle = info.hProcess;
process.is_valid = true;
process.id = (int64_t)p->handle;
if (write_stdin.len) {
WriteStdin(&process, write_stdin);

View File

@@ -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) {
printf("%s", message);
ReportWarningf("OpenGL message: %s", message);
if (severity == GL_DEBUG_SEVERITY_HIGH || severity == GL_DEBUG_SEVERITY_MEDIUM) {
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "OpenGL error", message, NULL);
}

View File

@@ -223,6 +223,14 @@ void ReportWarningf(const char *fmt, ...) {
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) {
Assert(direction == DIR_UP || direction == DIR_DOWN);
BSet set = GetBSet(window);

View File

@@ -22,7 +22,7 @@ void UpdateProcesses() {
Command_Append(view, poll, it.scroll_to_end);
}
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;
}
}
@@ -30,6 +30,7 @@ void UpdateProcesses() {
void Exec(ViewID view, bool scroll_to_end, String cmd, String working_dir) {
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.scroll_to_end = scroll_to_end;
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 = {}) {
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);
for (Process process = SpawnProcess(cmd, working_dir, stdin_string, Enviroment); IsValid(&process);) {
Scratch scratch(allocator);

View File

@@ -239,7 +239,6 @@ void Update(Event event) {
UpdateCo(&event);
ReloadLuaConfigs();
CallLuaOnUpdate(&event);
UpdateDebugBuffer();
GarbageCollect();
For(IterateInReverse(&order)) {

View File

@@ -121,6 +121,7 @@ Array<Edit> Command_ReplaceEx(Allocator scratch, View *view, String16 string);
void Command_Eval(String string);
void Command_Eval(String16 string);
String Command_GetMainDir();
void ReportDebugf(const char *fmt, ...);
void ReplaceWithoutMovingCarets(Buffer *buffer, Range range, String16 string);
void Command_Copy(View *view);

View File

@@ -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?
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 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
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
FEATURE Search whole words, case sensitive etc.
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
- Add metaprogram?
- PLATFORM Fix windows build
PLATFORM Fix windows build
- Changing window properties by changing the window name?
- 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?)
- 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
- Check. Convert more commands to taking buffer instead of view
- Check. Rewrite more commands to use already implemented commands?