Quick View

 go back

 

***************************************************************************

*                                       法律声明

* 版权所有:重庆比纯软件科技有限公司

* 比纯调试器及其文档是重庆比纯软件科技有限公司财产。没有

* 比纯软件科技正式许可,任何个人和单位不得将产品及其文档

* 用于商业活动。

*

*

*                                   LAW   DECLARATION

* Copyright (C) by Chongqing btrue software technology co.,ltd 

*

* BTR debugger product and its document is the property of Chongqing

* btrue software technology co.,ltd. Any person or orgnization 

* can't use it in commercial field without offical permission.

***************************************************************************

 

 

 

 

Introduce 

      Welcome to use BTR debugger. 

      BTR debugger is a true source code level debugger.

      In windows , BTR debugger 2.0 can debug MCUs[large ram] , Python , Go ,VC,JAVA, Kotlin , C#, Android , Qt , Node , Php , Driver matlab . In linux, BTR debugger 2.0 can debug GCC , JAVA , Kotlin , Android , Qt , Driver , embedlinux , Python , Go ,Php , Node , Uboot , Kernel. In BSD Unix , BTR debugger 2.0 can debug GCC . In android device, BTR debugger 2.0 can debug JAVA ,C , Qt , Kotlin . In MacOS | iOS, BTR debugger 2.0 can debug Object-C , Swift.

      BTR debugger 100% report crashed code , 100% report thread unlimited loop code.

      BTR debugger brings process log technology . It collect and filter process tracing data automatically. It is better than code break point technology.

      Code logical bugs can be found quickly by using its code log. BTR debugger remember each actually running code line. Look at the code running history , your logical bugs can be find quickly and clearly!

      BTR debugger track program resource open and close. Ram pointer, file, socket , object , ... can be tracked.

      BTR debugger track program variable. When the value of variable changed , BTR debugger immediately remember the current value and the running code line.

      BTR debugger support break point.

      BTR debugger's time used statistics can improve your program performance.

      BTR debugger has no configuration in default case.

      Copyright(C) btrue software technology co., ltd

 

Function feature 

 

      BTR debugger's main functions show as following:

1) flash

       User can watch the latest 60000 code runing lines. Many bugs hide here.

2) log

     Trace each code line , save it to code log. All bugs hide here.

3) pointer trace 

      Wild pointer or unfree pointer report in real-time.

4) message output

      Debug message output to console.

5) variable trace

      Trace the variable value changement , address , stack / heap map all variables.

6) time statistics

      Used time statistics

7) break point , watch point

     User can set code break point. In some cases, such as MCU , kernel , break point do not work well. However, watch point works well, it takes snapshot and do not break the process.

8) trace step by step

      Trace the code line step by step.

9) func

      The called functions sequence.

10)resource  

     trace  resource open and close. 

11)debug multiple projects in one time  

     debug program and its library projects in one time . debug the client and server process in one time. debug android java and jni c in one time. 

  

 

BTR debugger build project 

 If your project existed in /path1/path2/.../pathn, BTR debugger build the project is:

       build   /path1/path2/.../pathn   

or,

       ./bd.exe  build  /path1/path2/.../pathn                        ( WIN like: bd.exe  build  e:\temp\MyProject )

The dir must be absolute path and may include blank chars in windows. BTR debugger will analysis the project code and build it. The result of build package will include debugged plugin.

If build sucessfully , message shows: Msg 50017: build ok. Otherwise indicate build failed.

Only use BTR debugger build your project first, then you can use BTR debugger debug them .

You can use BTR debugger build multi - projects in one time. Then debug these projects in one time.

You must build your project ok manually. Then use BTR debugger build them.

 

language

build example

note

vc6

vc2003-

vc2019

build d:\BTR debugger\demo\win\hellowindow

build d:\BTR debugger\demo\win\tstdll

build d:\BTR debugger\demo\win\usedll

build c:\Programe Files\myproj\test

 

java

jdk

J2EE

build d:\BTR debugger\demo\win\javahello

build d:\BTR debugger\demo\win\javabean

build d:\BTR debugger\demo\linux\servlet

support eclipse , jboss , bea , ...  

vc# 

vc#2008-

vc#2019

build d:\BTR debugger\demo\win\cs

 

g++

gcc

 

build /BTR debugger/demo/linux/echo

build /BTR debugger/demo/linux/mylib

build /BTR debugger/demo/linux/mydll

build /BTR debugger/demo/linux/uselibdll

 

build /BTR debugger/demo/unix/mylib

build /BTR debugger/demo/unix/mydll

build /BTR debugger/demo/unix/myexe

 

Linux: gcc

Unix:  gcc

Win:   GUI Gcc

Driver 

 

build /home/usr/BTR debugger/demo/linux/mymoddrv

build E:\WDK8.1\samples\ioctl\sys

 

 

Linux kernel

build /home/usr/mylinuxmodule

 

uboot

build /opt/myuboot

 

    MCU

 

build d:\freescale\uart1_interrupt

user use uart as debugger port.note: mcu must have > 100M ram memory. 

 

Python

 

build d:\python\pytest

(Win , linux , unix ) Python

Go

build d:\golang\mygo

(Win , linux , unix ) Go

php

build d:\golang\myphp

(Win , linux , unix ) php

Nodejs

build d:\nodejs\mynode

(Win , linux , unix ) nodejs

Qt

 

build /home/usr/BTR debugger/demo/linux/myqt

build E:\BTR debugger\demo\win\myqt

 

( win  , linux , android )Qt

Nodejs

build d:\nodejs\mynode

(Win , linux , unix ) nodejs

 

 

android

(java)

 

android

(c,c++)

 

 

build /BTR debugger/demo/linux/android

( android STUDIO , SDK , NDK )

 

build e:\BTR debugger\demo\win\android

( android STUDIO , SDK , NDK )

 

 

Object-c

build /BTR/objectc

 

Swift

build /BTR/swift

 

Matlab

build /home/opt/matlabproj

 

 

BTR debugger Command list 

    

Command

Usage and descript

Example

F2

F2

pause the debugged process

F2

F3

F3

debugged process continue to run

F3

help

help

print command usage

help

shutdown

shutdown

exit bd.exe when process paused

shutdown

restore

restore

restore all code after build it

restore

build

 

build <homepath>

build <homepath>  [subpath]

build <homepath> a.c b.c c*.py

(1) build a project

(2) If supply subpath, then only debug the code in subpath; If no code in subpath, then BTR debugger is surely a command line buildr.

(3) if aggsin a.c b.c durning build, then only debug a.c b.c, the build program will runs fast.

 

build d:\myproj

build /home/usr/myprj

build /home/usr/myprj  init/db

build d:\myproj a.c

flash

flash [filter] [-s file]

Output the latest running code.

When process crashed , the last output line is crashed line.

flash

flash -s a.txt

(-s : save file)

flash a.c -s a.txt

lon

lon

log switch on ,so clog command is valid

lon

clog

clog [filter] -s file

output the whole running code.

clog -s -m 90000 c.txt 

(=m:max lines)

clog a.cpp -s d.txt

clog -e b.cpp -s d.txt

(-e: except b.cpp)

clog a.c:633 -s c.txt

(633 function declare line)

(a.c:633 assign a function body)

loff

loff

log off ,clog command is invalid

loff

fadd

fadd file | word

add filter , to filter flash or clog command

fadd a.cpp

fadd -f.cs : 653

( not include function f.cs : 653 )

fadd a.java : 981

(981 function declare line)

(a.java:981 func declare line)

fadd 'person->name'

 

flist 

flist

list all filter that added by fadd

flist

fdel

fdel #no

del filter

fdel 1

func

func [filter] [-s file]

output the latest functions sequence

func

func -s b.txt

func a.c -s b.txt

 

flog

 

flog -s file

output the all function sequence when log on

lon

...

flog -s b.txt

rfunc

rfunc [filter] -s file

output all running functions, all crash line include in these running functions.

rfunc -s a.txt

rfunc TestUnit.cpp -s a.txt

bins

bins <file : no>

insert break point 

if no crash code , you should add break point then process run fast.

bins a.cpp : 2149

bins [02149][a.cpp]

bins -v a.c : 34

process will break at a.c:34 if bwatch(...) find var changed here.

bdel

bdel <no#>

delete a break point

bdel 1

blist

blist

list all break points

blist

F7

F7

trace step by step

F7

F8

F8

each step must in a function

F8

F9

F9

next step isn't in current function

F9

pv

pv

list all unreleased resources assigned in [PV_FUNCTION] .

list all unfree pointers ( malloc, free),(new,delete)

pv

(sock , ram , file,struct,sql... is resource)

(h=open() close(h) is res function pair).

kadd

kadd <file : no >

add a key pointer, the process will interrupt if key pointer released. 

 kadd a.c : 2601

( trace the resource of line a.c:2601 )

kdel

kdel <no#>

delete a key pointer. 

 

kdel 1

klist 

klist

show all key pointers

 

klist

vlog

vlog -s file 

output value change log.

watch(var_name,v_addr,v_len) C,android c,MCU c,Qt C

watch(var_name,class,object,member, datatype, datalen) C#,JAVA 

 

vlog -s a.txt

(The all changement of variable v is saved ) 

bwatch("str",string,s,s,string, 8); //open

bwatch("str",string,s,s,string, 0);//close

 

vmap

vmap [ filter ] -s file

map all or part current variables value to file , only support c language

vmap -s v.txt

vmap a.cpp -s v.txt

vmap a* -s v.txt

 

amap

amap [pid] addr size

single variable address value map. support sizeof( struct ) function, support c language. the address comes from vmap.

amap 123000986 sizeof(in_addr) + 16

amap 123001486 sizeof( person ) * 15 + 32

amap 13889944 32

amap 16012122 16 * 10

amap 510 13889944 32

pid

pid

list all debugged process id, list all project, break list and filter list. user use the cmd to check which project is debugged.

 

pid

timeon

timeon

code time-used statistics switch on. clog command shows the used time.

[00008][hello.java](00054) subc x = new subc();
[00009][hello.java](00000) x.add( 21, 3725 );

new subc() used 54 time pieces. x.add(21,3725) used a few time.

timeon

timeoff

timeoff

code time-used statistics switch off

timeoff

import

import file

import old or other pc debug package which output by export command , android should import debug package that build by win/linux platform BTR debugger. 

import /home/usr/x.pkg

import /data/a.pkg ( android )

import c:\temp\a.dat

 

export

 

export -s file

export debug package to another test pc or android phone.

export -s /home/usr/a.dat

export -s i:\c.pkg

 

pkgclean

 

pkgclean

delete all old and un-used debug information package.

pkgclean

startpage

start BTR debugger web server

bd.exe start web to edit code tree or look help document.

http://127.0.0.1/btrcode.html edit code tree.

http://127.0.0.1/help/userguide.htm see help document.

In linux, port 80 needs root privilege run BTR debugger web server.

BTRweb.exe can alse start web.

 

startpage

stoppage

stop BTR debugger web server

use shutdown also stop web in BTRweb.exe 

stoppage

 

Copyright (C) btrue software technology co.,ltd.

 

 

BTR debugger plugin api 

    

 

function

Usage and descript

Example

bwp()

use watch point instead of break point, mcu uboot kernel driver phone nodejsonly use bwp, cant use bins command to insert break point, because the app can not pause.

 

y = f( x );

bwp();

bprint()

Output string message to BTR debugger

C C++:

bprint( const char *message );

Other:

bprint( String message );

bprint( string message );

bprint(message )

 

C C++:

sprintf( s , "%d" , i );

bprint( s );

 

Java:

z = x + y;
s = "" + z;

bprint( s );

C#:

bprint( "IUnknown" );

Python:

bprint("hi, python")

 

Go:

bprint("hi, golang")

 

bwatch()

Case 1: c language

C | Oc | Qt:

bwatch( const char *var_name , void *addr , int data_len );//open

bwatch( var_name , NULL , 0 ); //close

 

Case 2: global class

bwatch( show_title , class , object , member , datatype , datalen );//open

bwatch( show_title , class , object , member , datatype , 0 );//close

 

 

 

Case 3: gloval var

bwatch( show_title , var_name , datatype , datalen);//open

bwatch( show_title , var_name , datatype , 0);//close

 

bwatch( show_title , var_name.field , datatype , datalen);//open

bwatch( show_title , var_name.field , datatype , 0);//close

golang use case 3

 

Case 4: function var

bwatch( show_title , "var_name" , datatype , datalen);//open

bwatch( show_title , "var_name" , datatype , 0);//close

 

bwatch( show_title , "var_name.field" , datatype , datalen);//open

bwatch( show_title , "var_name.field" , datatype , 0);//close

 

 

bd>vlog -s x.txt 

( see x.txt to see the value and code line history )

 

 

Case 1: c language

 

b=(char *)malloc(64);

int i = 0;

//open to trace

bwatch("V1",b, 32 );

bwatch("V2",&i, 32 );

p = b;

while( i < 3 ){

strcpy( p , "ABC" );

i++;

p++;

strcat( p , "def");

p += 2;

*p++ = ( char )i;

}

//close trace

bwatch("V2",NULL, NULL );

bwatch("V1",0, 0 );

free( b );

 

Case 2: global class

Java:

bwatch( "p-name" , Person , p1 , name , String , 20 );

 

bwatch( "p-name" , 0 , 0 , 0 , 0 , 0 );

  

Case 3: gloval var

bwatch( "myglobal" , person_age , int , 4);

bwatch( "myglobal" , person_age , int , 0);

 

Case 4: function var

bwatch( "input" , "edit1.text" , String , 4);

bwatch( "input" , "edit1.text" , String , 0);

Copyright (C) btrue software technology co.,ltd.

 

 

BTR debugger network

    In Java , C# , Android , Embed linux , BTR debugger use LAN network  debug your process.

 

                      LAN 

     --------------------------------------------- 

          | device1                | device2

    Debugged process           BTR debugger

      

 The LAN can be wifi , ether mac.

      

 

 

BTR debugger version

    

        There are 2 types of BTR debugger versions: 

        Common version is only used for study . 

        Enterprise version and standard version are used in commercial field. User who use this version must purchase it first. 

        The install of common version is simple.

        Enterprise version needs btrue debugger server pc.

        Standard version needs btrue box.

 

Download enterprise version

 

    Company can download enterprise or standard version from www.btrue.com.cn.

    1.Download Enterprise version from www.btrue.com.cn

    2.  Company must email the following information to us by btrue@163.net . 

Company:

 

Address : 

 

Postcode:

 

Email    :

 

Company telephone  ( no mobilephone) :   

 

Contact person name:

 

Contact person mobilephone:

 

Date:

 

  3.  Our engineer will sent back the enterprise version or standard version package .  

  4.  Our engineer send back Tentcent weixin 2-D barcode or Alibaba 2-D pay barcode by btrue@163.net. Customer buy BTR debugger by 2-D barcode.

  5. Our engineer sent back btrue box and btrue debugger server pc to user. 

  6.  replace btrue server files d:\BTRServer\setup\*.* (LINUX like : cp *.* /home/usr/BTRServer/setup/)

  7. You can use BTR debugger to debug or test the large project now.

 

 

 

 

  BTR debugger document |Codetree editor

            

      The help directory is : .\home\help. The document are html files.

      If you use BTR debugger in windows or android platform , double click userguide.htm to learn how to use the debugger.

      If you use BTR debugger in linux or unix platform , use BTRweb.exe to study the help document. 

      If your operation system has already start www server , close it first.

      BTR debugger web server occupy so much resource that you must close BTR debugger web server after you need not use it.

      If you find disordered characters in browser, please set UTF character set. 

      1) Start the web server :

      ./bd.exe

   bd > startpage

      2) Use mozilla brower , visit url:

      http://www.btrue.com.cn/help/userguide.htm

      3) Close the www server.

      BTRweb > shutdown

      BTR debugger document solution can also browser your code tree. It will help you find your code quickly. You can modify , find , replace in the whole code tree. Linux and Unix user will welcome BTR debugger code tree editor.

      1) Start the web server:

      ./BTRweb.exe

      2) Use mozilla brower , visit url:

      http://127.0.0.1:9090/btrcode.html

      3) In  "Project path" field , input your code project path.

      /home/usr/BTR/demo/...

      Then click "Load" button to load them.

      4) Click one code file link, it will show in main content windows.

      5) Do find , modify , replace operation.

      6) Quit  mozilla brower.

      7) Close the www server.

      BTRweb > shutdown

 

Contact with us 


 

Company:

Chongqing btrue software technology co., ltd. 

 

 

Web site:

www.btrue.com.cn

 

 

Address : 

Shi qiao pu nanhua street 701#B2-9-8,  High and new technology development zone of Chongqing , China.

 

 

Email    :

btrue@163.net

 

 

TEL       :    

023-68935745(chongqing.china)

 

 

Postcode:

400039

   

 

Company:

重庆比纯软件科技有限公司 

 

 

Web site:

www.btrue.com.cn

 

 

Address : 

重庆市高新技术开发区石桥铺南华街701#B2-9-8

 

 

Email    :

btrue@163.net

 

 

TEL       :    

023-68935745(中国.重庆)

 

 

Postcode:

400039