精华内容
下载资源
问答
  • nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件、库文件、可执行文件中的符号表,返回二进制文件中各段的信息。 目标文件、库文件、可执行文件 首先,提到这三种文件,我们不得不提的就是gcc的...

    linux下强大的文件分析工具 -- nm

    什么是nm

    nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件、库文件、可执行文件中的符号表,返回二进制文件中各段的信息。

    目标文件、库文件、可执行文件

    首先,提到这三种文件,我们不得不提的就是gcc的编译流程:预编译,编译,汇编,链接。

    • 目标文件 :常说的目标文件是我们的程序文件(.c/.cpp,.h)经过预编译,编译,汇编过程生成的二进制文件,不经过链接过程,编译生成指令为:

      gcc(g++) -c file.c(file.cpp)
      将生成对应的file.o文件,file.o即为二进制文件
    • 库文件: 分为静态库和动态库,这里不做过多介绍,库文件是由多个二进制文件打包而成,生成的.a文件,示例:

      ar -rsc liba.a test1.o test2.o test3.o
      将test1.o test2.o test3.o三个文件打包成liba.a库文件
    • 可执行文件:可执行文件是由多个二进制文件或者库文件(由上所得,库文件其实是二进制文件的集合)经过链接过程生成的一个可执行文件,对应windows下的.exe文件,可执行文件中有且仅有一个main()函数(用户程序入口,一般由bootloader指定,当然也可以改),一般情况下,二进制文件和库文件中是不包含main()函数的,但是在linux下用户有绝对的自由,做一个包含main函数的库文件也是可以使用的,但这不属于常规操作,不作讨论。

    上述三种文件的格式都是二进制文件

    为什么要用到nm

    在上述提到的三种文件中,用编辑器是无法查看其内容的(乱码),所以当我们有这个需求(例如debug,查看内存分布的时候)去查看一个二进制文件里包含了哪些内容时,这时候就将用到一些特殊工具,linux下的nm命令就可以完全胜任。

    怎么使用nm

    如果你对linux下的各种概念还算了解的话,就该知道一般linux下的命令都会自带一些命令参数来满足各种应用需求,了解这些参数的使用是使用命令的开始。

    man

    那么,如何去了解一个命令呢,最好的方法就是linux下的man命令,linux是一个宝库,而man指令就相当于这个宝库的说明书。
    用法:man nm

    man_nm.png
    这里面介绍了nm的各种参数以及详细用法,如果你有比较不错的英文水平和理解能力,可以直接参考man page中的内容。

    nm的常用命令参数

    -A 或-o或 --print-file-name:打印出每个符号属于的文件
    -a或--debug-syms:打印出所有符号,包括debug符号
    -B:BSD码显示
    -C或--demangle[=style]:对低级符号名称进行解码,C++文件需要添加
    --no-demangle:不对低级符号名称进行解码,默认参数
    -D 或--dynamic:显示动态符号而不显示普通符号,一般用于动态库
    -f format或--format=format:显示的形式,默认为bsd,可选为sysv和posix
    -g或--extern-only:仅显示外部符号
    -h或--help:国际惯例,显示命令的帮助信息
    -n或-v或--numeric-sort:显示的符号以地址排序,而不是名称排序
    -p或--no-sort:不对显示内容进行排序
    -P或--portability:使用POSIX.2标准
    -V或--version:国际管理,查看版本
    --defined-only:仅显示定义的符号,这个从英文翻译过来可能会有偏差,故贴上原文:

    Display only defined symbols for each object file

    好了,上述就是常用的命令参数,光说不练假把式,下面将给出一个示例来进一步理解nm用法:
    示例代码:
    ```
    #include
    #include

    using namespace std;
    
    const char *str="downey";
    int g_uninit;
    int g_val=10;
    
    
    void func1()
    {
        int *val=new int;
        static int val_static=1;
        cout<<"downey"<<endl;
    }
    
    void func1(char* str)
    {
        cout<<str<<endl;
    }
    ```

    编译指令:

    g++ -c test.cpp
    在当前目录下生成test.o目标文件,然后使用nm命令解析:  
    nm -n -C test.o
    由于是C++源文件,故添加-C 选项,为了方便查看,添加-n选项

    输出信息:

    ```
                        U __cxa_atexit
                        U __dso_handle
                        U std::ostream::operator<<(std::ostream& (*)(std::ostream&))
                        U std::ios_base::Init::Init()
                        U std::ios_base::Init::~Init()
                        U operator new(unsigned long)
                        U std::cout
                        U std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
                        U std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
    0000000000000000    B g_uninit
    0000000000000000    D str
    0000000000000000    T func1()
    0000000000000004    b std::__ioinit
    0000000000000008    D g_val
    000000000000000c    d func1()::val_static
    0000000000000035    T func1(char*)
    0000000000000062    t __static_initialization_and_destruction_0(int, int)
    00000000000000a0    t _GLOBAL__sub_I_str
    ```

    下面我们再来解析输出信息中各部分所代表的意思吧

    • 首先,前面那一串数字,指的就是地址
    • 然后,我们发现,每一个条目前面还有一个字母,类似'U','B','D等等,其实这些符号代表的就是当前条目所对应的内存所在部分
    • 最右边的就是对应的程序内容了

    接下来需要讲解的就是上述输出信息中各条目的解析了:
    同样在还是在linux命令行下man nm指令可以得到:

    A     :符号的值是绝对值,不会被更改
    B或b  :未被初始化的全局数据,放在.bss段
    D或d  :已经初始化的全局数据
    G或g  :指被初始化的数据,特指small objects
    I     :另一个符号的间接参考
    N     :debugging 符号
    p     :位于堆栈展开部分
    R或r  :属于只读存储区
    S或s  :指为初始化的全局数据,特指small objects
    T或t  :代码段的数据,.test段
    U     :符号未定义
    W或w  :符号为弱符号,当系统有定义符号时,使用定义符号,当系统未定义符号且定义了弱符号时,使用弱符号。
    ?    :unknown符号

    根据以上的规则,我们就可以来分析上述的nm显示结果:

    • 首先,输出的上半部分对应的符号全是U,跟我们常有思路不一致的是,这里的符号未定义并不代表这个符号是无法解析的,而是用来告诉链接器,这个符号对应的内容在我这个文件只有声明,没有具体实现,如std::cout,std::string类,在链接的过程中,链接器需要到其他的文件中去找到它的实现,如果找不到实现,链接器就会报常见的错误:undefined reference。
    • 在接下来的三行中

      0000000000000000 B g_uninit
      0000000000000000 D str
      0000000000000000 T func1()
      令人疑惑的是,为什么他们的地址都是0,难道说mcu的0地址同时可以存三种数据?其实不是这样的,按照上面的符号表规则,g_uninit属于.bss段,str属于全局数据区,而func1()属于代码段,这个地址其实是相对于不同数据区的起始地址,即g_uninit在.bss段中的地址是0,以此类推,而.bss段具体被映射到哪一段地址,这属于平台相关,并不能完全确定。
    • 在接下来的四行中

      0000000000000004 b std::__ioinit
      0000000000000008 D g_val
      000000000000000c d func1()::val_static
      0000000000000035 T func1(char*)
      b在全局数据段中的4地址,因为上述g_uninit占用了四字节,所以std::__ioinit的地址为0+4=4.
      而g_val存在于全局数据段(D)中,起始地址为8,在程序定义中,因为在0地址处存放的是str指针,而我的电脑系统为64位,所以指针长度为8,则g_val的地址为0+8=8
      而静态变量val_static则是放在全局数据段8+sizeof(g_val)=12处
      函数func1(char*)则放在代码段func1()后面
      讲到这里,有些细心的朋友就会疑惑了,在全局数据区(D)中存放了str指针,那str指针指向的字符串放到哪里去了?其实这些字符串内容放在常量区,常量区属于代码区(t)(X86平台,不同平台可能有不同策略),对应nm显示文件的这一部分:

      00000000000000a0 t _GLOBAL__sub_I_str
      如果你对此有一些疑惑,你可以尝试将str字符串放大,甚至是改成上千个字节的字符串,就会看到代码段(t)的变化。

    好了,关于linux下nm命令的解析就到此为止啦,如果朋友们对于这个有什么疑问或者发现有文章中有什么错误,欢迎留言

    原创博客,转载请注明出处!

    祝各位早日实现项目丛中过,bug不沾身.
    (完)

    转载于:https://www.cnblogs.com/downey-blog/p/9583765.html

    展开全文
  • 查看二进制文件--linux

    2010-04-30 16:20:00
    查看二进制文件--linux学linux不久,经常被一个问题纠结:怎么查看二进制文件的内容啊?尤其是每次不小心打开二进制文件后被眼前的一堆@.....搞的很崩溃,今天看了看,有一个很简单的方法:$ vim dir然后输入":%!...

    查看二进制文件--linux

    学linux不久,经常被一个问题纠结:怎么查看二进制文件的内容啊?尤其是每次不小心打开二进制文件后被眼前的一堆@.....搞的很崩溃,今天看了看,有一个很简单的方法:

    $ vim dir

    然后输入":%!xxd"命令。如下:

     

    会把二进制文件的内容转换为十六进制。

    还可以用:":%!od"、":%!xxd -c N",N为数字,表示每行显示的字节数。

    展开全文
  • 想直接查看数据库导出文件 .dmp的内容,例如搜索某个用户。 过程 听说hexdump是可以的。 参数: -n 指定长度(有用,否则一个文件几个G,不指定长度怎么弄) -c 显示为ascii字符 -C 显示为16进制或者ascii字符(没发现...

    场景

    想直接查看数据库导出文件 .dmp的内容,例如搜索某个用户。

    过程

    听说hexdump是可以的。

    参数:
    -n 指定长度(有用,否则一个文件几个G,不指定长度怎么弄)
    -c 显示为ascii字符
    -C 显示为16进制或者ascii字符(没发现和-c有什么区别)
    -s 指定偏移量(如果游标不低,可能解析不出正确的字符)

    # 直接在页面显示内容
    hexdump -n 20 a.dmp
    # 导出到文件,更容易重复利用
    hexdump -C -n 20 a.dmp > b.txt
    

    折腾半天,用法虽然知道,但并不能解决我查找数据的需求,只得作罢。

    展开全文
  • b=7 val=a if a>b else val=b print(val)文件处理首先给你一个文件,或者自己建立一个文件,那如何查看文件的内容呢?1.安装个文本编辑器2.选中右键,利用文本编辑器...保存关闭正常的文件如上面的步骤,怎么用Py...

    原博:https://www.cnblogs.com/surewing/p/9130453.html

    • 列表项

    三元运算符号:

    a=3
    b=7
    val=a if a>b else val=b
    print(val)

    文件处理

    首先给你一个文件,或者自己建立一个文件,那如何查看文件的内容呢?
    1.安装个文本编辑器
    2.选中右键,利用文本编辑器软件打开
    3.查看OR写入
    4.保存关闭

    正常的文件如上面的步骤,怎么用Python打开这个文件,修改删除

    1.怎么样用Python读一个文件;(自己在桌面建了一个文件叫test123)

    f =open(file='D:/Users/tufengchao/Desktop/test123',mode='r',encoding='utf-8')
    data = f.read()
    f.close()
    • file是路径
    • mode 是打开的模式,r-读,w-写,rb-二进制
    • encoding 编码格式
    • read() 是读一个文件
    • close()是读了一个文件然后关闭

    ee3c8f050295ee5a099d999f73489ca4.png
    • 这里解释一下这个问题,首先我们的文件在硬盘里面是以二进制存储格式,最终读到内存是不是要转换我们能看懂的东西,从二进制转化为我们能看懂的内容,是有个对应的关系的,是按照字符编码来的,这个文件是按照gbk存储的,结果读的时候是按照utf-8来读的,所以在对应的编码表里面找不到对应的关系;
    • 我们平时使用的Word,也是这样的,只是微软帮你转换好了,小白用户是看不到这里面的转换的,直接使用就OK了
    • 在Python里面,你一定要记住你自己的文档是什么格式的,读的时候用什么格式的读,你要告诉Python你之前的是什么格式,要以什么格式打开,如果不指定,Python3默认的编码格式就是utf-8,(只要出现上述的报错,就是编码格式错误);
    • 如果不知道自己的文件原来的编码格式可以使用pycharm打开,pycharm右下角会自动给你检测的;

    文件处理二进制模式:

    python3里面所有的字符都是utf-8的形式,如果在打开一个文件的时候我不知道这个编码怎么办?

    那我们就不指定encoding的编码,那么Python3默认就是utf8但是这样也不行,同时我们要改变读的模式,才可以,r就是文本模式,可以直接读取字符串的,如果用户不知道文件的格式的话可以不指定编码格式,同时直接使用rb的模式,就是硬盘怎么存储的你就怎么存到内存,直接以二进制的形式,就可以了;

    f=open(file='D:/Users/tufengchao/Desktop/test123',mode='r',encoding='utf-8')
    data=f.read()
    print(data)
    • 如上述我指定了编码格式会报错:binary mode doesn't take an encoding argument
    f=open(file='D:/Users/tufengchao/Desktop/test123',mode='r',)
    data=f.read()
    print(data)
    • 以上则不会报错
    • 基本二进制就是不给人家看的,例如视频的格式,等等就是二进制的;
    • 基本来说 rb的模式就是不给人看的,就是网络传输用的,硬盘里面存的是什么读出来的就是什么;

    以上如果用户就是想看呢,怎么办呢?二进制的传来传去的最终有人会使用这个文件的,不管什么文件传来传去如果记不得什么格式怎么办呢?

    • 问题:在传输的时候对方不知道是以什么格式传给用户,传来传去彼此都忘了什么格式:
    在编码的时候:utf8:是3个字符,gbk是2个字符,每个字符数字对应的字符,一段2进制串,如果10个字节全部都是中文,永远不能是utf-8,但是又要存成中文,就只能是gbk了,第三方的工具箱,会自动检测这段文字是什么编码。
    我们需要用到一个第三方的工具包叫:**chardet**

    教大家如何安装chardet

    • pip3 install chardet
    • 然后代码输入:
    import chardet
    f= open('log',mode='rb')
    data=f.read()
    f.close()
    result=chardet.detect(open('log',mode='rb').read())
    print(result)
    • 通过上述我们可以知道什么的编码了,然后就可以通过具体的编码来看了;** 备注 **以上文件的路劲都是自己的本地,如果需要练习,大家可以自己创造文件;

    文件处理写模式操作文件:

    • 如果文件特别大,一read就全部读出来,如果内存小怎么办?
      1.可以不可以每次读一点,然后丢掉一点,然后在读一点?答案是当然可以了
    f=open('D:/Users/tufengchao/Desktop/test123','r',encoding='utf-8')
    for line in f:
        print(line)
    f.close()

    ddabf9d7b6658eb5072f11f860a4087f.png
    • 如上述的代码执行的结果中,竟然每行下边会有空格,为什么会有空格呢?
      1.因为prit本身就会换行;如上述的代码换成:
    f=open('D:/Users/tufengchao/Desktop/test123','r',encoding='utf-8')
    data=f.read()
    print(data)

    1ef86047c49ab9b47a99dd8dfb69cfcf.png

    就不会有问题了,
    如果是:

    for line in f:
        print(line)

    就会换行

    写文件:

    f=open('D:/Users/tufengchao/Desktop/test123','w',encoding='utf-8')
    f.write('老北京科技大学,微信号:xxx')
    f.close()

    如上述就是写的格式,(备注:文件可以自行准备,写的内容可以自己写入,同时这里面的编码要根据你要编写的文件的编码格式,并不是所有文件都是utf8,有可能是gbk等等)

    f=open('D:/Users/tufengchao/Desktop/test123','wb')
    f.write('第二梦')
    print(f.read())

    会发现,之间的文件内容,现在只有:“第二梦”了
    w不是修改,是创建了一个新的文件名字,如果和原来的旧文件有名字一样,原来的文件就是清空,如果是文件名字不一样就是新建,所以我们要是小心使用:w

    追加模式

    • 如果对一个文件我要修改一个条,或者追加一个内容:
    f=open('D:/Users/tufengchao/Desktop/test','a',encoding='utf-8')
    f.write('我要追加哈哈!!!!')
    f.close()
    • 注意:文件操作的时候,以 “a” 或者“ab”模式打开,则只能追加,即:在原来的内容尾部追加内容
    • 写入硬盘时候,必须是:0101010101,打开时候需要注意:
    • ab,写入时,需要直接传入以某种编码的010101010 ,即:字节类型
    • a 和encoding 写入时需要传入Unicode字符串,内部会根据encoding制定的编码将Unicode字符串转换为该编码的01001010101

    读写混合模式

    • r+ 就是读写混合模式:
    f=open('D:/Users/tufengchao/Desktop/test','r+',encoding='utf-8')
    data=f.read()
    print(data)
    f.write('混合模式啦!!!!')
    data1=f.read()
    print(data1)
    f.close()
    • 注意上述的第二个,read()没有打印出来对应的插入的内容,
    • 不是每次读完了,都重新读,就类似一个光标,光标在开始时候光标在第一个位置,然后read之后光标在最后,然后写的时候,结果光标又定位在最后了,所以读的时候从光标的位置往后读,所有读出来的结果就是空的,没有读出来;
    • 写读模式:w +
    • 读写和写读 听上去是一样的,其实完全不一样,读写模式:先读写,写读:是写模式打开,是写打开写,然后在读;(写:可以把原来的覆盖掉的)
    • w+基本上应用场景比较少;

    文件操作的其他的基本功能:

    def fileno(self,args,**kwargs):返回文件句柄在内核中的索引值,以后做IO多路复用的时候可以用到;def flush(self ,args,**kwargs):把文件从内存buffer里面强制刷新到硬盘上,例如:

    f=("f_flush_test.txt",'w')
    f.write("ntest")
    • 这时候打开文件f_flush_test.txt,发现是空白的:why?
    • 主要是写入的内容会先存入内存,然后在从内容写入硬盘,因为存入内存要比写入硬盘快很多;
    • 如上述的代码后边加入:f.close()就可以在文件f_flush_test.txt这个文件里面看到了;so每写一个字符都要往硬盘里面写的话会让速度很慢,所以就搞了个缓存功能,buffer,这个是可以改的,满了就会刷到硬盘里面,
      1.如果数据特别的大,但是有突然断电了这个怎么办呢?
      2.默认是buffer满了自动刷,现在要求强制刷,有没有这么的功能呢?
    f=("f_flush_test.txt",'w')
    f.write("ntest")
    f.flush()

    3.这时候打开文件是不是就有了刚才写的内容了;

    def readable(self ,args ,**kwargs):判断是否可读def readline(self ,args,kwargs):只读一行,遇到r or n为止def seek(self ,*args ,kwargs):
    把文件的光标移动到制定的位置;

    • 注意:seek的长度是按照字节算的,字符编码存每个字符所占的字节长度不一样。
    • 如:我爱祖国,用gbk存就是2个字节,用utf-8存就是3个字节,因此以gbk打开时,seek(4)光标就会定位在“爱”之后
    • 如果是utf-8,seek(4)会导致,拿到“爱”这个字的一部分字节,打印的话会报错,因此处理剩下的文本时发现用
    • def seekabale(self,*args,**kwargs)判断文件是否可以进行seek操作
    • def tell(self,*args,**kwargs)返回当前文件操作的光标位置
    • read()是按照字符来读的,tell()和seek()是按照字节来的
    • def truncate(self,*args,**kwargs)按照指定的长度截取文件
    • def writable(self,*args,**kwargs)判断是否可以写
    • word 在读取大文件的时候会慢,是因为他把硬盘的文件全部读取到内存,然后在内存中进行增删改查,在内存中就可以随便的修改了,就像列表一样,可以随意的修改东西;
    • 文件特别的大,会不会内存爆掉呀?
    • 有没有即不爆掉内存,又可以存到内存,我可以边读边修改,先读出来一点,然后检测一下是否修改,如果修改,就修改了放到新文件,如果不修改,就直接放到新文件里面,从一边读往一边写,这样就不会占内存了,就多站点硬盘;
    f_name='f_test.txt'
    f_new_name ='%s.new' %f_name
    old_str='wo'
    new_str='haha'
    f=open(f_name,"r",encoding='utf8')
    f_new =open(f_new_name,"w",encoding='utf-8')
    for line in f:
        if old_str in line:
            line=line.replace(old_str,new_str)
        f_new.write(line)
    f.close()
    f_new.write(line)
    f.close()
    f_new.close()
    os.rename(f_new_name,f_name)
    展开全文
  • b=7 val=a if a>b else val=b print(val)文件处理首先给你一个文件,或者自己建立一个文件,那如何查看文件的内容呢?1.安装个文本编辑器2.选中右键,利用文本编辑器...保存关闭正常的文件如上面的步骤,怎么用Py...
  • 查看二进制文件中的符号

    千次阅读 2011-12-06 15:25:51
    分析二进制文件之间的依赖关系的时候,没有很好的工具那将是很费劲的。 1、查看一个归档文件(也可以是.o文件)中未定义符号: nm -u lib*.a 2、查看共享目标文件中未定义的符号: readelf -s lib*.so |grep UND ...
  • 今天看别人写的程序, 有一点不是很明白, 就是在mfc的程序中利用CFile在写文件时是怎么区别二进制文件和文本文件的. 首先说一下二进制文件和文本文件的区别: 从网上找到一篇文章, 写的挺基础, 通俗易懂的, 和...
  • 前言 记录一次ceph集群线上问题,是osd的问题,时间比较久远了,过程已经记不清了,只记录了最终确认问题的方式 一、问题 ...拷贝其他节点上的osd二进制文件到当前节点,重启osd服务。服务恢复正常
  • 那么我们怎么获取查看mysql binlog(二进制日志)? 下面给大家介绍获取当前二进制日志列表的命令方法。 从mysql执行以下show binary logs命令,该命令将显示系统中的所有二进制日志。 mysql> SHOW BINARY
  • 那么,怎么查看二进制文件呢,在mysql里我们在命令后加"\G",在linux里可以用last命令。 last传送门 例如:/var/log/wtmp也是一个二进制文件,记录每个用户的登录次数和持续时间等信息。该日志文件永久记录每个用户...
  • 有时候需要将linux中的mysql从线上linux种down到windows查看,但是这种binlog日志是二进制的,应该怎么查看呢? 使用window上的mysqlbinlog.exe将其转码到另一文件 mysqlbinlog.exe -uroot F:\binlog.000050 &...
  • 今天看别人写的程序, 有一点不是很明白, 就是在mfc的程序中利用CFile在写文件时是怎么区别二进制文件和文本文件的. 首先说一下二进制文件和文本文件的区别: 从网上找到一篇文章, 写的挺基础, 通俗易懂的, 和大家...
  • 例如,在创建新表或更新现有表上的数据时,这些事件将存储在mysql binlog中,也就是MySQL数据库的二进制日志。二进制日志在MySQL复制中非常有用,主服务器将数据从...那么我们怎么获取查看mysql binlog(二进制日志...
  • 目前在做一个存储,磁盘里面的数据老是出现很诡异的地方,某个通道的录像播放到一半的时候,切换到另外一个通道的视频上去了,一直不知道怎么下手,想着用十六进制编辑器查看磁盘数据。 sudo yum install libtool...
  • 例如,在创建新表或更新现有表上的数据时,这些事件将存储在mysql binlog中,也就是mysql数据库的二进制日志。二进制日志在mysql复制中非常有用,主服务器将数据从...那么我们怎么获取查看mysql binlog(二进制日志...
  • 老师给的提示是说,先把二进制文件转成十六进制或其他格式 查看bytes,shorts and 32bit integer,floats, double 和string/char 之类的。 但是我转成十六进制文件后根本就看!不!懂!怎!么!破!啊!! ——...
  • 将后台返回的二进制流,保存在本地临时文件。 打开本地临时文件。 二、后台给我返回的文件流: 三、需实现的效果是:点击列表中“查看发票”(左图),跳转到在线预览界面(右图,是微信自带的,不需要写ui界面...
  • 事情是这样的,我在linux 下用C语言编写了一个小程序,对二进制文件进行复制。方法是fopen()一个二进制文件,然后用fread()读取一部分数据写到另一个新建的二进制文件中,直到复制完成。结束后我对两个文件进行对比...
  • 概述前面介绍了windows系统怎么去用certutil查看文件MD5值,从而辨别文件是否一致的问题。所以今天主要介绍linux环境怎么查看MD5。这样就可以知道windows传到linux的文件是不是有丢失之类的情况了。特别是在网络...
  • 1,在http://www.ej-technologies.com/download/jclasslib/files.html根据自己的操作系统下载jclasslib工具 2,解压缩,找到bin下的jclasslib.exe,双击运行 3,然后file-->open class file,选择你的*.class存放路径...
  • 例如,在创建新表或更新现有表上的数据时,这些事件将存储在mysql binlog中,也就是MySQL数据库的二进制日志。二进制日志在MySQL复制中非常有用,主服务器将数据从...那么我们怎么获取查看mysql binlog(二进制日志...
  • 今天犯了一个天大的错误,...有二进制日志才有点希望,我想我也没有啊,有人说有日志文件,我想还是没有,后来到我找到自己安装mysql时写的一篇日志,这篇日志给力了,我找到了我的my.cnf的位置,然后打开它,找到lo...
  • home/arm-tool下,然后用tar解压,再去/home下修改.bashrc文件,把解压后的bin路径包含进去,重启终端,执行 arm-none-eabi-gcc -v,提示执行二进制文件无法执行。 ![图片说明]...
  • 比如:txt文件内容是:ask 我想查看文件二进制内容,用什么软件翻译一下或者怎么弄?
  • 可以通过这种方式来查看二进制日志中的内容,主要的过程,可以看到语句在日志中是怎么存放的,在slave机器上就是按照这个顺序去执行sql的。 show binlog events in 'mysql-bin.000007'\G **********************...
  • 用Visual Studio查看图片的二进制

    千次阅读 2018-11-06 20:01:49
    怎么二进制流的方式查看一张图片呢?   打开visual studio,然后“文件/打开/文件” 选择打开方式为二进制编辑器即可 如下图操作所示 注:以上是十六进制的,两个数字一组,等于1个字节 前面16个...
  • 查看字符串的二进制形式

    千次阅读 2012-03-26 20:17:54
    主要是在MFC中读取文件的时候,书上都是以文本形式的方式读取,但是有时候想看看数据流的二进制长什么样,以前没有做过,不知道MFC中怎么查看二进制流,所以就试着将得到的文本数据转换成二进制流的形式查看。...
  • notepad怎么查看16进制编码

    万次阅读 2017-01-19 15:04:39
    notepad怎么查看16进制编码 在研究java字节码文件的时候想看看字节码文件的16进制编码,但原始的notepad(自己下载安装的notepad)没有查看16进制编码功能。这时需要我们手动安装HEX-Editor插件。 方式一: 第一步:...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 190
精华内容 76
关键字:

二进制文件怎么查看