[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: yabasic problem



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Mon, Aug 20, 2018 at 06:55:19AM -0500, Richard Owlett wrote:

[...]

> However if you do:
>       > strace -o mytrace yabasic test.bas
> it executes, but doesn't apparently doesn't give any explanation ow
> why the two files cannot be opened.

Hm. You will have realized that strace's output is extremely chatty:
you'll see the open for all possible libraries your program tries
to get hold of, then typically, after that succeeded, mmaping those
libraries into the process's address space, many failed attempts
at opening config and auxiliary files (in search of them at different
possible locations) until the program is where you consider it "up
and running".

You'll have to wade through it. Ah -- and if the program is just a
wrapper calling other processes, you'll have to tell strace to follow
them (option -f). For example (I use the option '-f', although I know
that 'cat' doesn't fork):

  strace -o /tmp/trace -f cat /no/such/file

I get the (expected) error:

  cat: /no/such/file: No such file or directory

and my /tmp/trace contains:

  4157  execve("/bin/cat", ["cat", "/no/such/file"], [/* 26 vars */]) = 0
  4157  brk(NULL)                         = 0x55850a279000
  4157  access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
  4157  mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7c303fc000

  # here you see the loading of the binary (execve), allocating memory (brk),
  # start of the search for the "interpreter" for the binary, etc.

  # lots of lines elided (roughly 85, in your program they'll be
  # quite a few more

  4157  fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
  4157  open("/no/such/file", O_RDONLY)   = -1 ENOENT (No such file or directory)

  # this is the failed attempt at opening "/no/such/file"

  4157  write(2, "cat: ", 5)              = 5
  4157  write(2, "/no/such/file", 13)     = 13
  4157  open("/usr/share/locale/C.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
  4157  open("/usr/share/locale/C.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
  4157  open("/usr/share/locale/C/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
  4157  write(2, ": No such file or directory", 27) = 27
  4157  write(2, "\n", 1)                 = 1

  # and this is the output of the error message to stderr (file descriptor 2)

  4157  close(1)                          = 0
  4157  close(2)                          = 0
  4157  exit_group(1)                     = ?
  4157  +++ exited with 1 +++

  # cleanup and exit.

> *HOWEVER* perhaps my system and strace do not "play well together".
> A tutorial I found gave as a first example:      > strace -o mytrace
> yabasic ls
> That gave 10 {apparently spurious} file errors before running "ls" normally.

See above: since libraries and other auxiliary files can be at one of
several places, many open errors are just the normal noise due to "looking
around".

Strace's output can be at first overwhelming, but it's a good tool
to have around.

> Now to solve logic flaws in my code ;/

Ah, that's the true joy :-)

Cheers
- -- t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iEYEARECAAYFAlt62hcACgkQBcgs9XrR2kauygCfYQHujYlJno4qvZ7bqOKvSKBG
CN4An3yyNA0JFRQiyF/5uce+yIbNtuzv
=h0BJ
-----END PGP SIGNATURE-----


Reply to: