website/content/blog/printdebug.md

41 lines
1 KiB
Markdown
Raw Normal View History

2021-06-03 14:03:06 -04:00
---
2023-02-18 21:37:22 -05:00
date: 2021-06-03 17:54:39
2021-06-03 14:03:06 -04:00
draft: false
2023-01-05 14:04:45 -05:00
medium_enabled: true
2023-02-18 21:37:22 -05:00
medium_post_id: a811c52bda55
tags:
- Testing
title: Print Statements with Frame Information
2021-06-03 14:03:06 -04:00
---
I find it extremely useful to include frame information such as filename, line number, and current function in my print statements. Here's a couple ways that I've done that in the past.
In C:
```c
#include <stdio.h>
#define DEBUGLOG(msg) (printf("[%s:%d %s] %s\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, msg))
int main() {
DEBUGLOG("Hello World");
}
```
In Python:
```python
from inspect import currentframe, getframeinfo
def debuglog(m):
frame = currentframe()
frame_info = getframeinfo(frame)
last_frame = frame.f_back
last_frame_info = getframeinfo(last_frame)
filename = last_frame_info.filename if last_frame_info is not None else "<stdin>"
lineno = last_frame_info.lineno if last_frame_info is not None else 1
function_name = last_frame_info.function if last_frame_info is not None else "<module>"
print(f"[{filename}:{lineno} {function_name}] {m}")
2023-02-18 21:37:22 -05:00
```