DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2016年6月30日

摘要: U盘挂载命令U盘插入的时候会显示启动信息,启动信息中sda: sda1指U盘的设备名为sda1dev设备目录下有一个sda1设备文件,此设备文件就是我们插入的U盘,我们将这个设备文件挂载到Linux系统的/mnt/udisk1这个目录下,这样我们即可以通过访问/mnt/udisk1目录来读写U盘,挂 阅读全文
posted @ 2016-06-30 19:40 DoubleLi 阅读(6083) 评论(0) 推荐(0)

摘要: 在网上有很多关于讲mdev的自动挂载基本上都是一个版本,经过测试自动挂载确实可行,但是关于自动卸载mdev似乎不能很好的支持,经过修改已经可以做到与udev的效果相似。不能在挂载的目录中进行热插拔,否则会出现问题,不过此问题在下次插入U盘时不会造成影响,可能对U盘有损坏。 本文介绍了mdev与ude 阅读全文
posted @ 2016-06-30 16:53 DoubleLi 阅读(3486) 评论(1) 推荐(0)

摘要: Linux的文件系统是异步的,也就是说写一个文件不是立刻保存到介质(硬盘,U盘等)中,而是存到缓冲区内,等积累到一定程度再一起保存到介质中。如果没有umount就非法拔出U盘,程序是不知道的,fopen,fwrite等函数都依然返回正确,知道操作系统要把写介质的时候,才会提示I/O错误。可是很多数据 阅读全文
posted @ 2016-06-30 16:52 DoubleLi 阅读(7521) 评论(0) 推荐(0)

摘要: 例: [cpp] view plain copy status = system("./test.sh"); [cpp] view plain copy status = system("./test.sh"); [cpp] view plain copy [cpp] view plain copy 阅读全文
posted @ 2016-06-30 16:51 DoubleLi 阅读(6830) 评论(0) 推荐(0)

摘要: 以下是网上看到的解决办法:http://blog.csdn.net/heqiuya/article/details/7870554 [plain] view plain copy 其实是掉电保护,之前挂在的SD变成了制度文件,只需要将SD卡重新挂载一遍就OK了. FAT: Filesystem pa 阅读全文
posted @ 2016-06-30 16:44 DoubleLi 阅读(2647) 评论(1) 推荐(0)

摘要: 一、土八路做法: SD 卡一旦插入系统,内核会自动在/dev/下创建设备文件:sdcard。 但有时可能时用户在拨出卡前并没有umount的话,第二次插卡进去后系统创建的就不是sdcard设备文件了,而是mmcblk0, mmcblk1p1, mmcblk2p1, 或mmcblk3p1.所以只需用i 阅读全文
posted @ 2016-06-30 16:41 DoubleLi 阅读(7885) 评论(0) 推荐(0)

摘要: 原文链接:5 simple ways to troubleshoot using Strace 我很意外大部分人都不知道如何使用strace。strace一直是我的首选debug工具,因为它非常的有效,很多问题都能够用它进行排查。 strace是什么? Strace是一个用来跟踪系统调用的简易工具。 阅读全文
posted @ 2016-06-30 15:22 DoubleLi 阅读(9891) 评论(0) 推荐(0)

摘要: 我们可以通过 1) gdb prog_name -> r 用在逐步调试自己的程序时 2) gdb -> attach process_id 正在运行中的后台程序突然卡在了某个地方,先ps再gdb/attach 3) gdb prog_name core 程序core掉了 三种方式对一个程序进行调试; 阅读全文
posted @ 2016-06-30 14:54 DoubleLi 阅读(1774) 评论(0) 推荐(0)

摘要: 只做工作总结备忘之用。 正在烧镜像,稍总结一下进来改bug遇到的问题。 一个项目里要用到L3 switch的nat,vrrp功能,但实地测试中偶然出现write file挂死的情况,但不是必现。交付在即,于是加调试信息,反复跑配置的脚本,定位bug。 一,期初怀疑是vtysh与vrrpd进程通信出现 阅读全文
posted @ 2016-06-30 14:52 DoubleLi 阅读(607) 评论(0) 推荐(0)

摘要: 摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来。这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手段。本文对LWP和strace命令做了简明扼要的介绍,并通过一个实例来说明如何运用。总而言之,LWP 阅读全文
posted @ 2016-06-30 14:42 DoubleLi 阅读(6176) 评论(0) 推荐(0)

摘要: gdb 调试多线程如果目标进程已经core dump了,那么 gdb -c core xxx xxx是对应的程序文件。如果目标进程还在运行,通常此时用于调试线程死锁的情况。有两种方法一是 gdb -p xxx xxx是该进程的进程ID或者用gcore xxx先获取对应进程的core,他会生成一个co 阅读全文
posted @ 2016-06-30 14:37 DoubleLi 阅读(1330) 评论(0) 推荐(0)

摘要: 线程有自己的寄存器,运行时堆栈或许还会有私有内存。 gdb提供了以下供调试多线程的进程的功能: * 自动通告新线程。 * \ "thread THREADNO\ ",一个用来在线程之间切换的命令。 * \ "info threads\ ",一个用来查询现存线程的命令。 * \ "thread app 阅读全文
posted @ 2016-06-30 14:36 DoubleLi 阅读(387) 评论(0) 推荐(0)

摘要: 一、多线程调试 多线程调试重要就是下面几个命令: info thread 查看当前进程的线程。 thread <ID> 切换调试的线程为指定ID的线程。 break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler- 阅读全文
posted @ 2016-06-30 14:34 DoubleLi 阅读(733) 评论(1) 推荐(0)

摘要: GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说GDB主要调试 阅读全文
posted @ 2016-06-30 14:23 DoubleLi 阅读(17623) 评论(0) 推荐(0)

摘要: 方法一:strace -fp pid , 可以跟踪所有线程, 进程的系统调用。 [root@xxxx]strace -p 24091 Process xxx attached - interrupt to quit [ Process PID=24091 runs in 32 bit mode. ] 阅读全文
posted @ 2016-06-30 14:18 DoubleLi 阅读(8894) 评论(0) 推荐(0)

摘要: pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。 int pthread_kill(pthread_t threa 阅读全文
posted @ 2016-06-30 13:34 DoubleLi 阅读(8451) 评论(0) 推荐(0)

摘要: 我编写了一个循环: long i; for (i = 0; i < 999999; i++) { mt.a += 1; sleep(1); }把它编译成a.out,并在后台执行它:./a.out & [1] 2570 然后用命令gdb ./a.out 2570可以附加到这个进程上。被时进程会中断。 阅读全文
posted @ 2016-06-30 13:32 DoubleLi 阅读(934) 评论(0) 推荐(0)

摘要: 查看堆栈:gdb -quiet -batch -ex='thread apply all bt' -p pid查看运行位置:gdb -quiet -batch -ex='thread apply all x $pc' -p pid 阅读全文
posted @ 2016-06-30 11:52 DoubleLi 阅读(4587) 评论(0) 推荐(0)

摘要: pstack.sh: #! /bin/sh if [ -z $1 ] then echo "gdb script for print stack" echo "usage: $0 pid" exit fi gdb --batch --quiet -x cmds -p $1 cmds: echo /n 阅读全文
posted @ 2016-06-30 09:30 DoubleLi 阅读(669) 评论(0) 推荐(0)

摘要: #!/bin/bash if (( $# < 1 )) then echo "usage: `basename $0` pid" 1>&2 exit 1 fi if [[ ! -r /proc/$1 ]] then echo "Process $1 not found." 1>&2 exit 1 f 阅读全文
posted @ 2016-06-30 09:29 DoubleLi 阅读(1121) 评论(0) 推荐(0)