mono / sdb

A command line client for the Mono soft debugger.
https://www.mono-project.com
MIT License
116 stars 44 forks source link

Can I change a variable value? #43

Closed callmekohei closed 6 years ago

callmekohei commented 6 years ago

Hello! I'm callmekohei!

Problems summary

So I want to change a valiable value daynamically.

Repro step

sample9$ cat foo.cs 
using System;
namespace HelloWorld
{
    class Hello
    {
        static void Main()
        {
            string s = "Hello World!";
            Console.WriteLine(s);

        }
    }
}

sample9$ mcs -debug foo.cs 

sample9$ sdb 'run foo.exe'
Welcome to the Mono soft debugger (sdb 1.5.6548.37600)
Type 'help' for a list of commands or 'quit' to exit

Inferior process '4040' ('foo.exe') started
Hello World!
Inferior process '4040' ('foo.exe') exited with code '0'

(sdb) bp add at foo.cs 8
Breakpoint '0' added at '/Users/callmekohei/tmp/sample9/foo.cs:8'

(sdb) r
Inferior process '4041' ('foo.exe') started
Hit breakpoint at '/Users/callmekohei/tmp/sample9/foo.cs:8'
#0 [0x00000001] HelloWorld.Hello.Main at /Users/callmekohei/tmp/sample9/foo.cs:8
            string s = "Hello World!";

(sdb) env set s abc

(sdb) env
's' = 'abc'

(sdb) s
Inferior process '4041' ('foo.exe') resumed
Inferior process '4041' ('foo.exe') suspended
#0 [0x00000007] HelloWorld.Hello.Main at /Users/callmekohei/tmp/sample9/foo.cs:9
            Console.WriteLine(s);

(sdb) p s
string it = "Hello World!"

(sdb) kill
Inferior process '4041' ('foo.exe') exited with code '0'

(sdb) q
Bye

sample9$ 

Expected

(sdb) p s
string it = "Hello World!"

(sdb) env set s abc
(sdb) env 
's' = 'abc'

(sdb) p s
string it = "abc"

Actual

(sdb) p s
string it = "Hello World!"

(sdb) env set s abc
(sdb) env 
's' = 'abc'

(sdb) p s
string it = "abc"
alexrp commented 6 years ago

It's a bit unintuitive, but basically what you need to do is p s = "abc" instead of env set s abc. env is only for manipulating environment variables for the debuggee.

callmekohei commented 6 years ago

Thank you !!! (^_^)v

I can do it.

I close this issue.