Skip to content

Instantly share code, notes, and snippets.

(lldb) settings set target.run-args 2
(lldb) run
There is a running process, kill it and restart?: [Y/n]
Process 44396 launched: '/Volumes/RamDisk/a.out' (x86_64)
Process 44396 stopped
* thread #1: tid = 0x65861, 0x0000000100000f66 a.out`main(argc=2, argv=0x00007fff5fbff838) + 150 at bus_error.c:15, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x7fff5fc87000)
frame #0: 0x0000000100000f66 a.out`main(argc=2, argv=0x00007fff5fbff838) + 150 at bus_error.c:15
12 s[i] = '\0';
13 break;
14 case '2':
(lldb) settings set target.run-args 0
(lldb) run
There is a running process, kill it and restart?: [Y/n]
Process 31576 launched: '/Volumes/RamDisk/a.out' (x86_64)
Process 31576 stopped
* thread #1: tid = 0x61fc2, 0x0000000100000f43 a.out`main(argc=2, argv=0x00007fff5fbff838) + 115 at bus_error.c:9, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=2, address=0x100005000)
frame #0: 0x0000000100000f43 a.out`main(argc=2, argv=0x00007fff5fbff838) + 115 at bus_error.c:9
6 for(int i = 0; ; i++){
7 switch(mode) {
8 case '0':
Last login: Wed Dec 18 12:10:55 on ttys006
mzyy94:~ mzyy94$ cd /Volumes/RamDisk/
mzyy94:RamDisk mzyy94$ gcc -g bus_error.c
mzyy94:RamDisk mzyy94$ lldb -- a.out
Current executable set to 'a.out' (x86_64).
(lldb) settings set target.run-args 0
(lldb) run
Process 67334 launched: '/Volumes/RamDisk/a.out' (x86_64)
Process 67334 stopped
* thread #1: tid = 0x50c5f, 0x0000000100000f43 a.out`main(argc=2, argv=0x00007fff5fbff838) + 115 at bus_error.c:9, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=2, address=0x100005000)
@mzyy94
mzyy94 / output
Created December 18, 2013 04:06
bus_error_test.cの出力結果
Last login: Wed Dec 18 11:19:03 on ttys001
mzyy94:~ mzyy94$ cd /Volumes/RamDisk/
mzyy94:RamDisk mzyy94$ gcc bus_error_test.c
mzyy94:RamDisk mzyy94$ ./a.out
ARRAY
mode: [auto/set]
Segmentation fault: 11
mode: [auto/read]
Segmentation fault: 11
mode: [const/read]
@mzyy94
mzyy94 / bus_error.c
Last active December 31, 2015 16:59
Segmentation faultとBus errorを再現するためのもの
int main(int argc, char* argv[]) {
unsigned char c[1];
static unsigned char s[1];
char mode = argc == 2 ? argv[1][0] : '\0';
for(int i = 0; ; i++){
switch(mode) {
case '0':
c[0] = s[i];
break;
@mzyy94
mzyy94 / bus_error_test.c
Last active December 31, 2015 16:49
Bus error: 10 の再現性を確認するためのテスト
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
int mode = 0;
jmp_buf jb;
static const char* label[] = {"auto/set", "auto/read",
"const/read", "static/set", "static/read",
"register/set", "register/read", "volatile/set",
"volatile/read", "normal/set", "normal/read"};